Selenium:在表

时间:2017-04-25 09:51:03

标签: selenium xpath selenium-webdriver

我正在使用Java和firefox进行自动化。 我有下表:

   <table width="200" border="0">
     <tbody>
      <tr>
        <td align="LEFT">User-ID: </td>
        <td>
         **<input name="username" size="25"/>**
       </td>
     </tr>
       <tr>
       <td align="LEFT">Password: </td>
       <td>
         **<input name="password" size="25" type="PASSWORD"/>**
      </td>
     </tr>
 </tbody>
</table>

我需要到达&#34;输入名称&#34;和&#34;输入密码&#34;为了输入我的凭据。我尝试了以下命令:

driver.findElement(By.xpath("html/body/div[7]/div[2]/form[2]/fieldset/table[1]/tbody/tr[1]/td[2]/input")).sendKeys("XXXXX");
driver.findElement(By.xpath("*//table//tbody//tr//td[2]/input/@name")).sendKeys("XXXXXXX");

在这两种情况下,eclipse都没有找到任何结果。

有人可以帮助我使用正确的xPath吗?

Eclipse中的错误按摩如下:

Exception in thread "main" org.openqa.selenium.InvalidArgumentException: Expected [object Undefined] undefined to be a string

3 个答案:

答案 0 :(得分:1)

查看HTML DOM,此命令适用于您:

您可以将“name”定位器用作:

driver.findElement(By.name("username")).sendKeys("your_username"); driver.findElement(By.name("password")).sendKeys("your_password");

OR

您可以将“xpath”定位器用作:

driver.findElement(By.xpath("//input[@name='username']")).sendKeys("your_username"); driver.findElement(By.xpath("//input[@name='password']")).sendKeys("your_password");

让我知道它是否适合你。

答案 1 :(得分:1)

使用code

xpath locator下面尝试此操作
driver.findElement(By.xpath("//input[@name='username']")).sendKeys("Username");
driver.findElement(By.xpath("//input[@name='password']")).sendKeys("XXXXXX");

xpath的说明: - 使用name标记的<input>属性。

注意:而不是absolute xpath,请使用relative xpath

  

OR

使用code

cssSelector下面尝试此操作
driver.findElement(By.cssSelector("input[name='username']")).sendKeys("Username");
driver.findElement(By.cssSelector("input[name='password']")).sendKeys("XXXXXX");

答案 2 :(得分:1)

我发现了为什么你的答案不起作用。 我得到的错误是一个实际的Firefox问题。 请参考此链接: https://bugzilla.mozilla.org/show_bug.cgi?id=1357661

非常感谢所有试图帮助我的人。