首页 > 解决方案 > 如何修复无法定位元素错误

问题描述

因此,我尝试从https://www.enterpristrucks.com/truckrental/en_US.html进行网络抓取,并尝试让它同时填写取件日期和退货日期。我通过使用以下代码进行了尝试:

`d.find_element_by_id("fldPickupdate1").click()
selected = d.find_element_by_class_name("ui-datepicker-next ui-corner-all")
d.execute_script("arguments[0].scrollIntoView(true)", selected)
selected.click()
d.find_element_by_xpath("//div[@class='ui-state-default' and text()='1']").click()`

但是我收到错误消息:没有这样的元素:无法找到元素:

我必须改变什么?

标签: pythonselenium-webdriverweb-scraping

解决方案


您的代码中有两个错误。

*第一的

.find_element_by_class_name用于单个类名,因此对于这一行:

.find_element_by_class_name("ui-datepicker-next ui-corner-all")

您必须用 css 选择器替换它:

.find_element_by_css_selector(".ui-datepicker-next.ui-corner-all")

*第二

在线:

.find_element_by_xpath("//div[@class='ui-state-default' and text()='1']")

它应该//a节点,而不是//div.

并尝试以下代码:

d.find_element_by_id("fldPickupdate1").click()
selected = d.find_element_by_css_selector(".ui-datepicker-next.ui-corner-all")
d.execute_script("arguments[0].scrollIntoView(true)", selected)
selected.click()
d.find_element_by_xpath("//a[@class='ui-state-default' and text()='1']").click()

推荐阅读