使用 selenium python 使用复合类解析 HTML 内容
Posted
技术标签:
【中文标题】使用 selenium python 使用复合类解析 HTML 内容【英文标题】:Parsing the HTML content using compound class using selenium python 【发布时间】:2017-05-28 18:47:57 【问题描述】:我的 GUI 中有一个显示按钮,用于显示连接状态(带有绿色复选标记的按钮表示连接已建立,带有红色叉号表示未连接) 我必须使用我的代码检查状态。 我正在解析该特定标题栏类名称(容器流体)的内容。 由此,我正在解析该显示按钮的显式内容。
elem = driver.find_element_by_class_name("container-fluid")
a= elem.get_attribute("outerhtml")
b= a.split("powerOn icon-ok-sign")
在此之后,我解析该按钮的一些显式内容并确定是否存在连接。
但如果我使用 class="powerOn icon-ok-sign",我会收到错误:
不允许使用复合类名
<div class="powerOn icon-ok-sign" data-original-title="Connection" style=" font-size: 2em;" data-toggle="tooltip" title="" data-placement="bottom" ng-class="&quot;powerOn icon-ok-sign&quot;: titleArea.systemStatus.connection.value, &quot;powerOff icon-remove-sign&quot; : !titleArea.systemStatus.connection.value"></div>
【问题讨论】:
【参考方案1】:但如果我使用 class="powerOn icon-ok-sign",我会收到错误 Compound class names not allowed
其实selenium doesn't support to locate an element using Compound class名字。
您应该尝试使用 on of then 来代替:-
driver.find_element_by_class_name("powerOn")
或者
driver.find_element_by_class_name("icon-ok-sign")
或使用css_selector
使用多个类名来定位相同元素的最佳方法:-
driver.find_element_by_css_selector(".powerOn.icon-ok-sign")
参考链接:-
Compound class names are not supported error in WebDriver How to avoid Compound Class name error in Page Object?【讨论】:
嗨@Saurabh Gaur,我对此还有一个疑问。当我的连接按钮显示交叉时,浏览器窗口不再活动。因此,当时当我使用 elem = driver.find_element_by_css_selector(".powerOn.icon-ok-sign") 时,我得到了这个异常 NoSuchElementException: Message: Unable to locate element: "method":"css selector","选择器":".powerOn.icon-ok-sign"。那么,检查这种情况的正确方法是什么,我的脚本继续没有任何异常错误 @KaranPatel 你应该使用然后driver.find_elements_by_css_selector(".powerOn.icon-ok-sign")
这将返回元素列表或空列表。如果元素不存在,它永远不会抛出异常。因此,您只需检查空列表即可确定您的状况。谢谢..:)
我使用了 try and except 条件,但这看起来也不错。谢谢:)【参考方案2】:
您可以改用CSS Selector
搜索:
driver.find_element_by_css_selector(".powerOn.icon-ok-sign")
或使用其中一个类名来选择您的元素:
driver.find_element_by_class_name("powerOn")
【讨论】:
嗨,Andersson,我对此还有一个疑问。当我的连接按钮显示交叉时,浏览器窗口不再活动。因此,当时当我使用 elem = driver.find_element_by_css_selector(".powerOn.icon-ok-sign") 时,我得到了这个异常 NoSuchElementException: Message: Unable to locate element: “方法”:“css 选择器”,“选择器”:“.powerOn.icon-ok-sign”。那么,检查这种情况的正确方法是什么,我的脚本会继续运行而不会出现任何异常错误。以上是关于使用 selenium python 使用复合类解析 HTML 内容的主要内容,如果未能解决你的问题,请参考以下文章
无效的选择器:不允许使用 Selenium 的复合类名称错误