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

chu*_*nor 6 selenium-webdriver

我知道这里有几个查询同样的问题,但没有一个提供我特定问题的解决方案.

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

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"#ctl00_BodyContent_txtBuildingNumber"}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mar*_*nds 11

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

driver.switchTo().frame();
Run Code Online (Sandbox Code Playgroud)

例如:

driver.switchTo().frame(1);
driver.switchTo().frame(driver.findElement(By.id("id")));
Run Code Online (Sandbox Code Playgroud)

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

driver.switchTo().defaultContent();
Run Code Online (Sandbox Code Playgroud)