填写HTML表格下的输入框

时间:2019-06-20 01:49:44

标签: python selenium xpath css-selectors webdriverwait

我正在尝试使用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"中选择元素。

以下是从Chrome检查器复制的xPath代码:

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

2 个答案:

答案 0 :(得分:0)

这是您可以使用的xpath。

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

enter image description here

您还可以使用屏幕截图中显示的其他xpath。

enter image description here

答案 1 :(得分:0)

要将字符序列发送到与文本 USER ID 相关的登录<input>元素,您必须诱使 WebDriverWait 元素可点击,您可以使用以下任一解决方案:可以使用以下Locator Strategies之一:

  • 使用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