【问题标题】:How to check if Xpath exist and get span text in Selenium with Python如何使用 Python 检查 Xpath 是否存在并在 Selenium 中获取跨度文本
【发布时间】:2020-08-08 07:01:15
【问题描述】:

我想提取 class badge pull-right bg-green r-r 中的 span 文本。但是,class badge pull-right bg-green r-r 可能并不总是可用。具体来说,当 class badge pull-right bg-green r-r 可用时,我将设置元素等于 Hello World,当 class badge pull-right bg-green r-r 不可用时,我将设置元素等于 No Exist

通过调整OP1的代码,实现了以下代码以适应当前的需求。

if len( self.browser.find_element_by_xpath('.//span[@class = "badge pull-right bg-green m-l-5 m-r-5"]') ) > 0 :  
    element = \
    self.browser.find_elements_by_xpath( './/span[@class = "badge pull-right bg-green m-l-5 m-r-5"]' )[ 0 ].text

但是,我收到以下错误

TypeError: 'WebElement' 类型的对象没有 len()

提前感谢您的任何见解。

为了方便排查,下面给出了网站完整的外部HTML框架

 <li id="tcl_SiringMenu1_sbmenu" class="has-sub">
        <a href="javascript:;">
         <b class="caret pull-right"></b>
         <i class=" tcl tcl -fw tcl -myr"></i>
         <span>Ruang PeluangGame <span class="badge pull-right bg-gray r-r">Hello World</span> </span>
        </a>

        <ul class="sub-menu" style="display: none;">
            <li id="tcl_SiringMenu1_AmbilDuit">
            <a href="/pguna/ambilduit/permainan.aspx">
            Permainx LODR<span class="badge pull-right bg-green r-r">Hello World</span></a>
            </li>
        </ul>
    </li>

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    简单修复使用find_elements_by_xpath() 代替find_element_by_xpath()

    if len( self.browser.find_elements_by_xpath('.//span[@class = "badge pull-right bg-green m-l-5 m-r-5"]') ) > 0 :  
        element =self.browser.find_elements_by_xpath( './/span[@class = "badge pull-right bg-green m-l-5 m-r-5"]' )[ 0 ].text
    

    【讨论】:

    • 感谢您的回复。我只是好奇这段代码是否可以进一步优化。正如这里提到的:stackoverflow.com/a/53340823/6446053。请参阅 Brian Leishman M 的评论。上述方法两次找到该元素。因此,他建议使用类似 e = driver.find_elements_by_id('blah') if e: e[0].click 的东西。但是,当我尝试模拟这一点时,if 语法出现错误。也许你对此有一些想法?
    • 我现在不在,我晚点回来好吗?
    • 好的,谢谢!只是为了知识
    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 2018-09-23
    • 1970-01-01
    • 2019-08-22
    • 2020-11-16
    相关资源
    最近更新 更多