Заполнение поля ввода под таблицей HTML - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь войти на веб-страницу с помощью Python Selenium. Однако я не получаю правильный ответ. Поле ввода находится под таблицей HTML в Интернете.

Это то, что я попробовал, посмотрев некоторые учебники в Интернете.

driver.find_element_by_xpath("//table[5]/tbody/tr[1]/td[2]/input").send_keys("hi")

HTML-код:

<html>

<head>...</head>

<body>

  <form name="form" action method="post" onsubmit>
    <table border="0" , width="100%" cellpadding="0" cellspacing="0">...</table>
    <table border="0" , width="100%" cellpadding="0" cellspacing="0">...</table>
    <table border="0" , width="100%" cellpadding="0" cellspacing="0">...</table>
    <table align="center" border="0" width="100%" cellpadding="0" cellspacing="0">...</table>

    <table align="center" border="0" width="100%" cellpadding="0" cellspacing="0">
      <tbody>
        <tr align="left">
          <td class="mandatory"> USER ID</td>
          <td class="normal">
            <input class="subject" type="text" name="username" size="35" maxlength="10" onkeypress="navigate();">
          </td>
        </tr>
      </tbody>
    </table>

Мне интересно выбрать элемент в input class = "subject", который является пятой таблицей.

Ниже приведен код xPath, скопированный из инспектора Chrome:

/html/body/form/table[5]/tbody/tr[1]/td[2]/input

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Чтобы отправить последовательность символов на элемент логина <input>, связанный с текстом ИДЕНТИФИКАТОР * , вам нужно вызвать WebDriverWait для элемента быть кликабельным , и вы можете использовать любое из следующих решений: можете использовать одно из следующих Стратегий локатора :

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.subject[name='username'][onkeypress^='navigate']"))).send_keys("Wen Jiaxin")
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='subject' and @name='username'][starts-with(@onkeypress, 'navigate')]"))).send_keys("Wen Jiaxin")
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 20 июня 2019

Вот xpath, который вы можете использовать.

 //form[@name='form']/table[5]//input[@name='username']

enter image description here

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

enter image description here

...