Как проверить, существует ли Xpath и получить ли текст span в Selenium с Python - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел бы извлечь текст диапазона, расположенный в классе badge pull-right bg-green r-r. Однако класс badge pull-right bg-green r-r может быть не всегда доступен. В частности, я бы установил элемент равным Hello World всякий раз, когда доступен класс badge pull-right bg-green r-r, и равен No Exist, когда класс badge pull-right bg-green r-r недоступен.

Путем настройки кода из 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 framework сайта приведен ниже

 <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>

1 Ответ

1 голос
/ 24 апреля 2020

Простое исправление Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...