Selenium WebDriver无法在iframe中定位元素,并抛出NoSuchElementException

时间:2013-07-16 14:55:10

标签: selenium-webdriver

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

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

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

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

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

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

5 个答案:

答案 0 :(得分:11)

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

driver.switchTo().frame();

例如:

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

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

driver.switchTo().defaultContent();

答案 1 :(得分:0)

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

 driver.switchTo().frame(1);

等待陈述。

答案 2 :(得分: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) 谢谢

答案 3 :(得分:0)

抱歉,以下为我工作了一点点修正

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

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

答案 4 :(得分:0)

你可以使用wait语句,使用wait语句之后只需使用

driver.swithcTo()帧();