Selenium - 在执行期间找不到xPath搜索元素,但可以在浏览器中找到它

时间:2016-05-10 17:38:12

标签: java selenium xpath

我在java中使用chrome驱动程序和selenium。

这是我的java代码。它是在我感兴趣的特定页面上执行的。

driver.findElement(By.xpath("//input[@name='firstName']")).sendKeys("John");

这是在网站上,在该特定页面上。

<input type="text" id="fname" name="firstName" placeholder="First Name" data-reactid="....">

问题甚至不是将文本设置为输入,而是它根本找不到输入字段。这是错误

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@name='firstName']"}
Command duration or timeout: 20.04 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 16:57:40'

从错误中可以看出,我隐含了等待20秒,我可以看到页面和字段在此期间已加载。

所以奇怪的是,当我打开chrome并检查元素并通过xPath搜索时,使用相同的命令我可以找到该字段(在我的java在同一个chrome窗口上崩溃的同一页面上)。我可以找到除输入字段之外的所有其他元素。

有没有办法解决这个问题?是否通过硒以这种方式支持输入字段?!我不知道该怎么做,任何想法都非常感激!

1 个答案:

答案 0 :(得分:1)

你需要处理iframe才能获得你的元素:

data: {
  form: {
    companyName: 'Dummy Company',
    street: '123 Example Street',
    city: 'Example',
    state: 'CA',
    zip: '90210',
    contactName: 'John Smith',
    phone: '310-555-0149',
    email: 'john@example.com',
    numberOfOffices: 1,
    numberOfEmployees: 2,
  }
}