我正在编写一个Python程序,该程序使用Selenium导航到高级搜索页面上的搜索框并输入信息。本网站使用Javascript,每次加载网站时,每个搜索框的ID和名称都会略有变化,但类名仍保持一致。类名经常被重用,所以我的目标是使用find_elements_by_class_name(classname)
,然后通过该列表进行索引。
例如,一个框具有类名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)
但得到一个错误,列表索引超出范围,暗示它无法找到任何东西。我检查了元素,这绝对是它的类名,所以我不确定如何继续。
答案 0 :(得分:3)
这些是多个类,而不是带有空格的单个类,只需将所有类一起使用即可。
driver.find_element_by_css_selector('.class1.class2.class3')
在CSS选择器中,点.
是一个类,您可以连接任何数字类名称
答案 1 :(得分:1)
尝试将类名转换为CSS选择器
使用CSS选择器,名为x-form-text x-form-field x-form-num-field
的类
变成.x-form-text.x-form-field.x-form-num-field
所以基本上只需用点替换空格,你就可以了。