7

我意识到这里有几个针对同一问题的查询,但它们都没有为我的特定问题提供解决方案。

我正在运行一个网络驱动程序测试,试图为邮件网站填写表格,以根据地址详细信息查找邮政编码。尝试定位第一个文本框时,我不断收到此错误:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"#ctl00_BodyContent_txtBuildingNumber"}

我已经使用 xpath 和 id 来尝试定位元素,但我不断收到错误消息。当 webdriver 运行时,我可以看到这个元素存在,并且我已经能够在页面上找到另一个文本元素并输入文本,但是我不断收到这个字段和框架内其他字段的错误。

我猜这个问题一定与这个字段是 iFrame 的一部分有关。

我在测试中使用了隐式等待,但没有成功。我仍然得到错误。

4

5 回答 5

11

根据它的声音,您需要首先切换到iframe包含您要与之交互的元素的元素。(虽然没有看到相关的 HTML,但这是一个推断的猜测)。

driver.switchTo().frame();

例如:

driver.switchTo().frame(1);
driver.switchTo().frame(driver.findElement(By.id("id")));

完成与框架内元素的交互后,您需要切换回主网页。

driver.switchTo().defaultContent();
于 2013-07-16T15:35:16.180 回答
0

抱歉,以下内容对我有用

driver.switchTo().frame(driver.findElement(By.xpath("//*[@id='page-15']/div/p/iframe")));

//*[@id='page-15']/div/p/iframe是我试图单击的按钮所在的框架的 xpath。(驱动程序是 WebDriver 类型,即 WebDriver 驱动程序)谢谢

于 2014-05-27T12:46:55.867 回答
0

检查您的 xpath 。尝试使用简单的

 driver.switchTo().frame(1);

带有等待声明。

于 2013-07-17T04:41:07.827 回答
0

以下对我有用

driver.switchTo().frame(myd.findElement(By.xpath("//*[@id='page-15']/div/p/iframe")));

//*[@id='page-15']/div/p/iframe是我试图单击的按钮的框架的 xpath。(driver是 WebDriver 类型,即WebDriver driver)谢谢

于 2014-05-27T12:36:05.913 回答
0

您可以使用等待语句,并在使用等待语句后简单地使用

driver.swithcTo().frame();

于 2015-09-01T16:36:33.323 回答