我在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窗口上崩溃的同一页面上)。我可以找到除输入字段之外的所有其他元素。
有没有办法解决这个问题?是否通过硒以这种方式支持输入字段?!我不知道该怎么做,任何想法都非常感激!
答案 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,
}
}