Селен: найти элемент, хранящийся в контейнере - PullRequest
0 голосов
/ 11 декабря 2018

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

<a href="javascript:void(0);" onclick="AUL.update('AssignedAssetsUpdateContainer', {}, '13.7.25.0.0.0.0.2.3.0.0.1.2.0.3.0.1.5.3.3.0.1.3.1.5.0.0.1.2.9.5.1.19.0.1.3.1');">
123456
</a>

Сначала я попытался найти его, выполнив поиск по всемтеги вроде:

assetElements = driver.find_elements_by_tag_name("a")
for element in assetElements:
     if(element.text == "123456")
          element.send_keys(Keys.RETURN)

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

Butttt .... Из чистого диска, чтобы найти его, я взял дополнительные опции find_elements, найденные в https://selenium -python.readthedocs.io / api.html # и распечатал их сегменты .text там, где они были доступны, и не смогли его найти.

Любые идеи приветствуются.Это моя первая публикация на сайте, поэтому я надеюсь, что ничего не пропустил.

Вот изображение поля, которое я пытаюсь найти, ответ на поиск:

Ответ контейнера поиска

Screen Shot

, чтобы показать, вот ответ CSS, который находит другие записи, но не "123456"

CSS_Selector Response

Screen Shot

Добавлен скриншот, показывающий найденные результаты поиска элементов

Снимок экрана с найденным элементом @ JeffC

Screen shot

1 Ответ

0 голосов
/ 11 декабря 2018

Требуемый элемент является JavaScript включенным элементом, поэтому для вызова click() на элементе вы должны заставить WebDriverWait для элемента быть активируемым и вы можете использовать следующее решение:

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick,'AssignedAssetsUpdateContainer') and normalize-space()='123456']"))).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, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...