【问题标题】:Selenium Python - Finding Elements by Class Name With SpacesSelenium Python - 通过带空格的类名查找元素
【发布时间】:2018-05-19 12:31:15
【问题描述】:

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

但出现列表索引超出范围的错误,这意味着它找不到任何东西。我检查了元素,这绝对是它的类名,所以我不确定如何继续。

【问题讨论】:

标签: python selenium


【解决方案1】:

那些是多个类,不是一个带空格的类,只是将所有类一起使用。

driver.find_element_by_css_selector('.class1.class2.class3')

在 CSS 选择器中,点 . 是一个类,您可以连接任意数字类名

【讨论】:

  • 天哪……我花了好几天的时间才找到它!非常感谢
【解决方案2】:

尝试将类名转换为 CSS 选择器。
使用 CSS 选择器,一个名为 x-form-text x-form-field x-form-num-field 的类 变成.x-form-text.x-form-field.x-form-num-field
所以基本上只需用点替换空格就可以了。

【讨论】:

  • 我试过这个,但我收到一个错误,上面写着“列表索引超出范围”,这意味着它无法使用该 css 选择器找到任何内容。我试过的代码是: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)@Dalvenjia
  • 你能发布你正在尝试这个的网址吗?
  • 不幸的是,该 URL 位于只有特定人员才能访问的登录页面后面。还有其他信息可以作为 URL 的占位符吗?
  • 在css选择器的开头需要另一个".",即quantminclass = '.x-form-text.x-form-field.x-form-num-field.x-form-empty-fiel‌​d'
  • 哦,天哪.. 阿米特当然是对的。 @AndrewKerrigan 试试他的版本并告诉我们。
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 2015-07-12
  • 2020-11-29
  • 2018-12-24
相关资源
最近更新 更多