Как найти элемент для нажатия на веб-сайте - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужно заполнить форму. Я начинаю использовать Selenium. После входа в систему без проблем появляется новый экран. Там есть вкладка с левой стороны, которую мне нужно нажать, чтобы открыть форму, которую нужно заполнить. На этой вкладке есть текст "Alta registro compra". Я не могу найти способ нажать там.

Это часть кода, которая должна работать, с момента, когда я предоставляю пароль (логин), я жду, пока элемент загрузится:

 <li id="establecimientos1"><a href="/aples/faces/web/registros    /alta_registro0.faces" style="padding-top: 5px;padding-bottom: 5px;padding-left:5px; background-color: #B1C3BE;height: 15px">
                <span style="vertical-align: 5px; cursor: pointer;">Alta registro compra
                </span></a>
        </li>'''

вот код сайта. Я уже пытался найти с xpath с тем же результатом ...

<form id="j_id24" name="j_id24" method="post" action="/aples/faces/entrada.faces" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_id24" value="j_id24" />
    <div id="menu" style="position: relative; left: 0px; top: 0px">
    <ul id="menunavlist">
        <li id="establecimientos1"><a href="/aples/faces/web/registros/alta_registro0.faces" style="padding-top: 5px;padding-bottom: 5px;padding-left:5px; background-color: #B1C3BE;height: 15px">
                <span style="vertical-align: 5px; cursor: pointer;">Alta registro compra
                </span></a>

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

1 Ответ

0 голосов
/ 21 апреля 2019

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li#establecimientos1>a[href*='alta_registro0']>span"))).click()
    
  • Использование XPATH:

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