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

2024-06-17 10:44:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: divid号码morrisprimaryflooravenuepresentjob
3条回答

要打印文本2nd floor,您可以使用以下任一Locator Strategies

  • 使用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,您可以使用以下任一Locator Strategies

  • 使用xpath

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

理想情况下,您需要为visibility_of_element_located()诱导WebDriverWait,并且您可以使用以下任一Locator Strategies

  • 使用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,您可以使用以下任一Locator Strategies

  • 使用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
    

You can find a relevant discussion in How to retrieve the text of a WebElement using Selenium - Python


参考资料

链接到有用的文档:

返回元素或第一个直接子元素的文本

在获得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])

使用拆分和包含

相关问题 更多 >