Python Selenium:如何打印 link?

Python Selenium: How can I print the link?

如何打印 href 属性的值?

<a href="aaaaa.pdf"></a>

如何使用 python selenium 打印 link aaaaa.pdf

HTML:

<div class="xxxx">
    <a href="aaaaa.pdf"></a>
</div>

你可以这样做:

print(driver.find_element_by_css_selector(".xxxx a").get_attribute('href'))

试试下面的方法:

   pName = driver.find_element_by_css_selector(".xxxx").text
    print(pName)

   pName = driver.find_element_by_css_selector(".xxxx").get_attribute("href")
   print(pName)
div.xxxx a

首先,检查这个 CSS_SELECTOR 是否代表所需的元素。

检查步骤:

Press F12 in Chrome -> 转到 element 部分 -> 执行 CTRL + F -> 然后粘贴 css 并查看是否需要 element正在 突出显示 1/1 匹配节点。

如果是,则使用显式等待:

wait = WebDriverWait(driver, 20)
print(wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.xxxx a"))).get_attribute('href'))

进口:

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

href属性的值即aaaaa.pdf 位于 <a> 标签内,该标签是 <div> 标签的唯一后代。


解决方案

要打印 href 属性的值,您可以使用以下任一方法 :

  • 使用css_selector:

    print(driver.find_element(By.CSS_SELECTOR, "div.xxxx > a").get_attribute("href"))
    
  • 使用 xpath:

    print(driver.find_element(By.XPATH, "//div[@class='xxxx']/a").get_attribute("href"))
    

要理想地提取值,您必须归纳 for the and you can use either of the following :

  • 使用CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.xxxx > a"))).get_attribute("href"))
    
  • 使用 XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='xxxx']/a"))).get_attribute("href"))
    
  • 注意:您必须添加以下导入:

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