【问题标题】:Parsing the HTML content using compound class using selenium python使用 selenium python 使用复合类解析 HTML 内容
【发布时间】: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="{"powerOn icon-ok-sign": titleArea.systemStatus.connection.value, "powerOff icon-remove-sign" : !titleArea.systemStatus.connection.value}"></div>

【问题讨论】:

    标签: python selenium selenium-webdriver css-selectors classname


    【解决方案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")
    

    参考链接:-

    【讨论】:

    • 嗨@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”}。那么,检查这种情况的正确方法是什么,我的脚本会继续运行而不会出现任何异常错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2016-10-15
    相关资源
    最近更新 更多