Selenium python find_element_by_class_name()从v 2.2到2.21停止工作 - 不能使用'Compound Class Name'

Rob*_*tor 11 python selenium webdriver

我正在使用Selenium的python库从Firefox中的html页面中抓取数据.

我不得不从Selenium 2.0更新到2.21因为服务器已经更新了Firefox.

在v 2.21中,调用find_element_by_class_name("grid-cell-inner grid-col-name")失败:

selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'
Run Code Online (Sandbox Code Playgroud)

我尝试访问的元素的类名是 grid-cell-inner grid-col-name

调用find_element_by_class_name()工作在v 2.2,所以逻辑是正确的,并且以前找到的数据没问题.第2.21节中有些变化.

所有Selenium示例都给出了类名foo等的简单示例,而没有我需要访问的名称类型.

为什么Selenium停止支持查找类似名称的类grid-cell inner grid-col-name,以及它们的解决方案是什么?

有人可以帮我找到带有"复合"类名的元素吗?

谢谢.

Pet*_*ček 15

WebDriver的问题在于它仍然在发展.很多.我个人不知道一个版本支持在一个命令中搜索多个类,所以它一定是一个相当老的:).

然而,通过CSS选择器搜索应该可行:

find_element_by_css_selector(".grid-cell-inner.grid-col-name");
Run Code Online (Sandbox Code Playgroud)

我不建议将XPath用于此特定事物,因为以下两个表达式是不同的:

//*[class='grid-cell-inner grid-col-name']

//*[class='grid-col-name grid-cell-inner']


som*_*guy 7

您需要使用".nameA.nameB.nameC"格式的CssSelector,您可以拥有任意数量的CssSelector,只需添加"."

或者你可以匹配整个属性(你也可以用xpath做):" [class ='exact class name here']"XPath - "// [@ class ='exact class name here']"

有一些方法可以开始结束包含(在CSS和xpath中),这有助于动态生成类.


Arr*_*ran 0

我认为 Selenium 很长一段时间以来都不支持复合类名。

不用说,尝试通过 XPath 或 CSS 选择器或通过“grid-cell-inner”的类名,然后过滤以查看哪些元素具有“grid-cell-inner grid-col-name”类。