Selenium Python - 按类名查找元素与空格

时间:2017-12-05 18:38:26

标签: python selenium

我正在编写一个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)

但得到一个错误,列表索引超出范围,暗示它无法找到任何东西。我检查了元素,这绝对是它的类名,所以我不确定如何继续。

2 个答案:

答案 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
所以基本上只需用点替换空格,你就可以了。