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']
您需要使用".nameA.nameB.nameC"格式的CssSelector,您可以拥有任意数量的CssSelector,只需添加"."
或者你可以匹配整个属性(你也可以用xpath做):" [class ='exact class name here']"XPath - "// [@ class ='exact class name here']"
有一些方法可以开始或结束或包含(在CSS和xpath中),这有助于动态生成类.
我认为 Selenium 很长一段时间以来都不支持复合类名。
不用说,尝试通过 XPath 或 CSS 选择器或通过“grid-cell-inner”的类名,然后过滤以查看哪些元素具有“grid-cell-inner grid-col-name”类。
| 归档时间: |
|
| 查看次数: |
22108 次 |
| 最近记录: |