给定:
- Python 3.11.2语言
- selenium 4.8.2
- Chrome作为浏览器引擎
我希望在HTML中找到以下内容:
<input type="text" class="datepicker apex-item-text apex-item-datepicker hasDatepicker" size="32" value="15-MAR-2023">
我试过这个:
browser.find_element(By.CLASS_NAME, 'datepicker apex-item-text apex-item-datepicker hasDatepicker')
以及
browser.find_element(By.CSS_SELECTOR, 'input[type="text"][class="datepicker apex-item-text apex-item-datepicker hasDatepicker"]')
但在这两种情况下我都得到
Unable to locate element: {"method":"css selector" ...
两种方法都是...可能对于基于“class_name”的搜索,这是一个bug(?)。
有什么办法让它运作起来吗?
先谢谢你了。
2条答案
按热度按时间31moq8wy1#
尝试按如下方式使用XPATH:
如果页面需要花时间加载元素,您可以尝试使用
waits
:导入
waits
所需的语句:bxgwgixi2#
几件事
By.CLASS_NAME
只接受一个类名,但您已将其发送到4。“日期选择器”、“顶点项目文本”、“顶点项目日期选择器”、“具有日期选择器”均为类名。
您可以将其转换为CSS选择器,
CSS选择器语法中的
.
表示一个类名,因此它查找所有四个类名。1.请不要将类字符串转换为直接的字符串比较,例如。
这使得CSS选择器在指定多个类并使它们以任意顺序排列等方面失去了很多灵活性。请参见第1点中的CSS选择器。
我的猜测是,至少有一个类在该元素中并不总是存在。也许在某些情况下,它是一个不同的颜色或禁用,等等,其中的类并不总是相同的。看看该INPUT的不同状态,找到总是存在的类,并创建一个CSS选择器,只有这些类,例如
input.datepicker.apex-item-datepicker
作为一个猜测。