0

我必须在 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>
4

2 回答 2

1

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

  • 使用css_selector文本属性:

    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"))
    

理想情况下,您需要诱导WebDriverWait并且visibility_of_element_located()您可以使用以下任一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"))
    
  • 使用XPATH文本属性::

    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
    
于 2021-11-14T12:23:15.523 回答
0

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

//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
于 2021-11-14T12:18:31.253 回答