【问题标题】:How to get Xpath in div tag?如何在 div 标签中获取 Xpath?
【发布时间】:2021-11-14 11:57:01
【问题描述】:

我必须在 python 中使用 Selenium 在此代码中获取 xxxxxxxx。如何获取 href 或 xxxxxxxxxxxxx 以及如何访问目标?

<div class="card-header bg-light card-collapse p-0" id="readHeading13">
<a class="btn btn-link btn-block text-dark d-flex justify-content-between align-items-center py-2" data-toggle="collapse" href="#readCollapse13" aria-expanded="false" aria-controls="readCollapse13">13. owner <span class="accordion-arrow">
<i class="fas fa-arrow-down small">
</i>
</span>
</a>
</div>
<div id="readCollapse13" class="collapse show" aria-labelledby="readHeading13"><div class="card-body p-3">
<form>
<div class="form-group">
<a href="/address/xxxxxxxxxxxxx" target="_parent">xxxxxxxxxxxxx</a> <i><span class="text-monospace text-secondary">address</span></i></div></form></div></div></div>

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    要打印文本值xxxxxxxxxxxxx,您可以使用以下任一Locator Strategies

    • 使用css_selectortext属性:

      print(driver.find_element_by_css_selector("div.card-body > form a[href*='address']").text)
      
    • 使用xpathget_attribute()

      print(driver.find_element_by_xpath("//div[contains(@class, 'card-body')]/form//a[contains(@href, 'address')]").get_attribute("innerHTML"))
      

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

    • 使用CSS_SELECTORget_attribute()::

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.card-body > form a[href*='address']"))).get_attribute("innerHTML"))
      
    • 使用XPATHtext 属性::

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='name' and @title='Download']"))).text)
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      【解决方案2】:

      我猜这里的唯一定位器如下:

      //div[@class="form-group" and(contains(text(),"address"))]//a
      

      因此,您可以获得href 属性和文本值如下:

      el = driver.find-element_by_xpath('//div[@class="form-group" and(contains(text(),'address'))]//a')
      el_href = el..get_attribute("href")
      el_text = el.text
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-20
        • 2015-11-25
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多