如何解决Selenium Element.get_attribute偶尔失败
给出以下代码:
options = webdriver.ChromeOptions()
options.add_argument("headless")
driver = webdriver.Chrome(options=options)
driver.get('https://covid19.apple.com/mobility')
elements = driver.find_elements_by_css_selector("div.download-button-container a")
csvLink = [el.get_attribute("href") for el in elements]
driver.quit()
最后,csvLink有时具有链接,而大多数时候没有。如果我在调试器的最后一行停了下来,它通常在csvlink中什么都没有,但是如果我手动执行(在调试器中)elements[0].get_attribute('href')
,则返回正确的链接。每次。
如果我替换
csvLink = [el.get_attribute("href") for el in elements]
直接致电-
csvLink = elements[0].get_attribute("href")
它也失败。但是,再次,如果我停在driver.quit()
行,并手动执行,则会返回正确的链接。
在使用Selenium时我没有意识到时间或路径依赖吗?
解决方法
我猜想这与javascript加载链接的方式和时间有关。 Selenium可以立即获取它,而无需等待javascript能够加载元素LotteryPortfolioDummy
的属性值。尝试显式等待选择器,例如:
PortfolioSort
参考:
- Selenium - wait until element is present,visible and interactable
- How do I target elements with an attribute that has any value in CSS?
此外,如果您href
怀疑元素存在(也许),但href为空?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。