如何使用div id访问div元素文本


<div id="MainCopy_ctl13_presentJob_AddressLinesPanel">
<div>
2nd Floor
</div>
<div>
1801 Morris Avenue
</div>
<div>
Primary: 432567865
</div>
</div>
  1. 我怎么能只到2楼
  2. 如何只打印号码(432567865)

element.text返回元素或第一个直接子元素的文本。

在获得带有id的div之后,可以使用css选择器。

element = driver.find_element_by_id(ID)
# This will get first div child
floor = driver.find_element_by_css_selector('#id > div:nth-child(1)')
second = driver.find_element_by_css_selector('#id > div:nth-child(2)')
# OR
childs = element.find_elements_by_tag_name('div')
# This will return all child divs in an array

您也可以使用element.find_element_by_css_selector(selector)在元素(我们通过driver.find_element_by_id(ID)获得)中进行搜索

虽然css选择器使用起来更快,但如果您愿意,也可以使用XPath。

print(driver.find_element_by_xpath('//div[@id="MainCopy_ctl13_presentJob_AddressLinesPanel"]/div[contains(.,"Primary")]').split(':')[1])

使用拆分并包含

要打印文本2nd floor,您可以使用以下定位器策略之一:

  • 使用css_selectorget_attribute("innerHTML"):

    print(driver.find_element(By.CSS_SELECTOR, "div#MainCopy_ctl13_presentJob_AddressLinesPanel > div").get_attribute("innerHTML"))
    
  • 使用xpath文本属性:

    print(driver.find_element(By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']/div").text)
    

要打印文本432567865,您可以使用以下定位器策略之一:

  • 使用xpath:

    print(driver.find_element(By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']//div[contains(., 'Primary')]").text.split(':')[1])
    

理想情况下,您需要诱导WebDriverWait等待visibility_of_element_located(),并且您可以使用以下定位器策略之一:

  • 使用CSS_SELECTOR文本属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div#MainCopy_ctl13_presentJob_AddressLinesPanel > div"))).text)
    
  • 使用XPATHget_attribute("innerHTML"):

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']/div"))).get_attribute("innerHTML"))
    

要打印文本432567865,您可以使用以下定位器策略之一:

  • 使用xpath:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@id='MainCopy_ctl13_presentJob_AddressLinesPanel']//div[contains(., 'Primary')]"))).text.split(':')[1])
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

您可以在"如何使用Selenium-Python 检索WebElement的文本"中找到相关讨论


引用

有用文档链接:

  • get_attribute()方法Gets the given attribute or property of the element.
  • text属性返回The text of the element.
  • 使用Selenium的文本和innerHTML之间的差异

相关内容

  • 没有找到相关文章

最新更新