我正在编写一个Python程序,它使用Selenium来导航到高级搜索页面上的搜索框,并在其中输入信息。这个网站使用Javascript,每次加载网站时,每个搜索框的ID和Name都会略有变化,但类名保持一致。尽管类名经常被重用,所以我的目标是使用find_elements_by_class_name(classname)
,然后在该列表中建立索引。
例如,一个box的类名为x-form-text x-form-field x-form-num-field x-form-empty-field
,但我不能使用它,因为selenium认为它是一个复合类名,并抛出一个错误。如果我只使用它的一部分,如x-form-text
,它就找不到元素。我希望找到一种允许空格的方法,或者,如果不能做到这一点,找到一种方法来搜索类名包含一段不带空格的文本的所有元素,例如x-form-text
。
任何帮助或想法将不胜感激!
编辑:
我试了这个代码:quantminclass = 'x-form-text.x-form-field.x-form-num-field.x-form-empty-field' quantmin = '25' browser.find_elements_by_css_selector(quantminclass)[0].send_keys(quantmin)
但是得到了一个错误,列表索引超出了范围,这意味着它找不到任何东西。我检查了元素,这肯定是它的类名,所以我不知道如何继续。
4条答案
按热度按时间0s0u357o1#
这些是多个类,而不是一个带有空格的类,只是将所有类一起使用。
在CSS选择器中,一个点
.
是一个类,可以连接任意数量的类名igetnqfo2#
请尝试将类名转换为CSS选择器。
使用CSS选择器,名为
x-form-text x-form-field x-form-num-field
的类将变为.x-form-text.x-form-field.x-form-num-field
所以基本上只要用点代替空格就可以了。
6tdlim6h3#
如果类名(或其他属性)中包含空格,例如:
这将起作用:
lc8prwob4#
由于Selenium 4
find_element_by_*
已过时,因此需要使用find_element()[Selenium-doc]