如何解决Selenium find_elements By.XPATH尝试提取href url错误
我要使用Firefox Webdriver,从 {% for key,visit in value_array_from_controller%}
<tr>
<td>{{ Key }}</td>
<td>{{ visit.startDate | date }}</td>
<td>{{ visit.patient.firstName}} {{ visit.patient.lastName }}</td>
</tr>
{% endfor %}
中提取所有包含单词的URL。
我正在使用最新的硒二进制。
试过这个:
a href
但出现类型错误:
driver = webdriver.Firefox()
driver.get(url)
nodes = driver.find_elements(By.XPATH,"//a[contains(@href,'products')]/@href")
print("nodes: ",nodes)
links = []
for elem in nodes:
links.append(elem)
还尝试了selenium.common.exceptions.WebDriverException: Message: TypeError: Expected an element or WindowProxy,got: [object Attr href="https://www.example.com/catalogue/products/a.html"]
然后每个都使用driver.find_elements(By.XPATH,'products')]")
,但效果不尽人意。
不知道错误在哪里以及如何解决这个问题。
html的摘录:
getAttribute("href")
解决方法
要使用Selenium和python提取href
属性,您必须为visibility_of_all_elements_located()
引出WebDriverWait,并且可以使用以下任一{{3 }}:
-
使用
CSS_SELECTOR
:print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"a[href*='products']")))])
-
使用
XPATH
:print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.XPATH,"//a[contains(@href,'products')]")))])
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。