python - 如何修复无法定位元素错误
问题描述
因此,我尝试从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()`
但是我收到错误消息:没有这样的元素:无法找到元素:
我必须改变什么?
解决方案
您的代码中有两个错误。
*第一的
.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()
推荐阅读
- r - 选择下拉元素会导致错误:“元素当前不可见,可能无法操作”
- google-bigquery - BigQuery 加入需要大量时间
- javascript - 单击按钮时无法在laravel ajax中下载文件
- c# - C# 使用 JsonConverter 将 Json List 转换为 List 对象
- ajax - 出现的原因是什么 - 对象 url 未定义?
- ssl - HEROKU 免费层 SSL:您需要在 Hobby 或 Professional dynos 上运行才能使用 SNI SSL
- node.js - NodeJS 通用池如何设置请求超时?
- python - 如何使用 gurobipy 编写最大化约束
- php - 获取产品特定数据并更新变量和单个产品
- java - 如何扩展 navHostFragment?