Selenium, Python, не может нажать кнопку, проверив имя элементов таблицы

#python #macos #google-chrome #selenium

#питон #macos #google-chrome #selenium #python

Вопрос:

Я пытаюсь улучшить свои Selenium навыки, и для этой задачи я пытаюсь нажать кнопку так, как она выбирается по имени элементов таблицы.

Например, в этом случае я хочу найти EB Trial 2 и нажать import кнопку, которая связана с этим.

 <tr ng-repeat="event in bcEvents" class="ng-scope">
            <td>
                <div class="dib fxac">
                    <i class="icon-event fs32 text-light-blue mr15"></i>
                    <div class="event-inner">
                        <a href="" class="link link-underline db ng-binding">EB Trial2</a>
                        <span class="db fs-small text-light-blue ng-binding">11/15/2016</span>
                    </div>
                </div>
            </td>
            <td ng-switch="bc_source">
                <!-- ngSwitchWhen: 2 --><div ng-switch-when="2" class="ng-scope">
                    <a href="" ng-click="import_bc_event(event)" class="btn btn-icon btn-orange">
                        <i class="icon icon-eventbrite-icon"></i> Import
                    </a>
                </div>
                <!-- ngSwitchWhen: 8 -->
                <!-- ngSwitchWhen: A -->
                <!-- ngSwitchWhen: 9 -->
                <!-- ngSwitchWhen: B -->
            </td>

            <!-- ngIf: bc_source != 2 -->
        </tr>
  

Я пытаюсь дотянуться до него, XPath но это не сработало

 driver.find_element_by_xpath("//td[contains(text(),'EB Trial2')]/preceding-sibling::td[1]").click() 
  

Я не могу понять, как это сделать

Кто — нибудь может мне помочь в этом?

Комментарии:

1. Пожалуйста, опубликуйте код, который вы используете, и какие ошибки и т.д. вы сталкиваетесь.

2. Я пытаюсь добраться до него с помощью XPath, но это не сработало driver.find_element_by_xpath(«//td[содержит (text(),’EB Trial2′)]/previous-sibling::td[1]»).нажмите () вот так. Я не могу понять, как это сделать.

Ответ №1:

Я хочу найти EB Trial 2, затем нажмите кнопку импорта, которая связана с этим

Вы должны попробовать использовать xpath как :

 driver.find_element_by_xpath(".//td[descendant::a[text()='EB Trial2']]/following-sibling::td//a[normalize-space(.)='Import']").click()
  

Комментарии:

1. Кстати, я пытаюсь дождаться, пока кнопка станет доступной для нажатия с помощью этого кода element = WebDriverWait(driver, 60).until( EC.element_to_be_clickable((By.XPATH,»»)), но это выдает мне неизвестную ошибку: элемент не доступен для кликабельности много раз