我意识到这里有几个查询同样的问题,但它们都没有为我的特定问题提供解决方案。
我正在运行一个网络驱动程序测试,试图填写邮件网站的表单,以根据地址详细信息查找邮政编码。尝试找到第一个文本框时,我不断收到此错误:
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"#ctl00_BodyContent_txtBuildingNumber"}
我已经使用xpath和id来尝试找到该元素,但我一直收到错误。我可以看到,当webdriver运行时,此元素存在,并且我已经能够在页面上找到另一个文本元素并输入文本,但是我仍然在此字段和框架内的其他字段中收到此错误。
我猜这个问题必须与这个字段是iFrame的一部分有关。
我在测试中使用了隐式等待但没有成功。我仍然得到错误。
答案 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()帧();