Как нажать на панели инструментов <dd>элемент? - PullRequest
1 голос
/ 20 февраля 2020

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

<dl class="ToolbarDropdown_menu_2wY9X ToolbarDropdown_isHidden_3UaGr" tabindex="0" style="" 
xpath="1"><dt><span class="ToolbarDropdown_title_1NBVn">New</span>
<span class="DropdownArrow_arrowIcon_dDzph DropdownArrow_down_3dlvo"></span>
</dt>
<dd class="ToolbarDropdown_item_nP-_M" style="">Dataset</dd>
<dd class="ToolbarDropdown_item_nP-_M">Project</dd>
</dl>

Мне нужно нажать на элемент с текстом Dataset.

Я нахожу элемент таким образом

DATASET_BUTTON = (By.XPATH, '//dd[contains(text(),"Dataset")]')

И я хочу выполнить подобное действие

self.driver.find_element(*VideosPageLocator.DATASET_BUTTON).click()

И никакого действия, но в терминале похоже на мой шаг прошло. У вас есть идеи, как щелкнуть элемент в раскрывающемся списке?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

Возможно, действие выполнено до полной загрузки DOM.
Попробуйте использовать WebDriverWait .

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

web_driver_wait = WebDriverWait(self.driver, 10)
element = web_driver_wait.until(EC.element_to_be_clickable((By.XPATH,'//dd[contains(text(),"Dataset")]')))
element.click()
0 голосов
/ 20 февраля 2020

Чтобы вызвать click() для элемента с текстом Набор данных , вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать следующую Стратегию локатора :

  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//dl[starts-with(@class, 'ToolbarDropdown')]//dd[starts-with(@class, 'ToolbarDropdown_item') and text()='Dataset']"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...