Selenium - 在iFrame中获取WebElement时出错
我正在用Selenium Chrome WebDriver最新版本构建一个小型自动测试脚本,但是现在我面临一个问题,即使在切换到iFrame时也尝试获取WebElement。Selenium - 在iFrame中获取WebElement时出错
这是HTML的构建方式:
你可以检查一下,还有另外一个页面“镶嵌”里面的iFrame,并且按钮的定义如下(这是我选择的一部分):
这是我使用来获取WebElement的方式(显然不及格):
WebElement frameAperturar =
driver.findElement(By.xpath("//iframe[@title='Aperturar']"));
driver.switchTo().frame(frameAperturar);
asociarSiniestroButton = driver.findElement(By.xpath("//button[@aria-label='Asociar Siniestro']"));
asociarSiniestroButton.click();
这是我当我试图让WebElement异常:
no such element: Unable to locate element: {"method":"xpath","selector":"//button[@aria-label='Asociar Siniestro']"}
(会话信息:铬= 60.0.3112.113)
你知道我怎么能得到的元素在切换到框架后,iFrame内的页面?
我是新来硒,但好像你的按钮其实是“跨越”和XPath不会像这样工作,尝试//span[contains(text(),'Asociar Siniestro')]
他确实有一个具有相同类的按钮,所以他的xpath是正确的,但可能是点击控制可能不是该元素,因此你的xpath可以工作 –
使用此XPath
//span[@class='apexButtonText'][contains(text(),'Asociar Siniestro')]
您可以用实际选择一个iFrame下面的方法: -
- 帧(指数)
- 帧(该帧的帧[或] Id的名称)
- 帧(WebElement frameElement)
- defaultContent()
因此可以通过将任何高于约帧信息进行切换。是的,你需要根据需要采取行动
例切换每次: -
driver.SwitchTo().Frame(0);
driver.SwitchTo().Frame("top");
....在框架
driver.SwitchTo().defaultContent();
driver.SwitchTo().Frame("navigation");
执行你的行动....在框架执行
driver.SwitchTo().defaultContent();
尝试下面的XPath你的行动
//span[@class='apexButtonText' and contains(.,'Asociar Siniestro')]
OR
//span[contains(text(),'Asociar Siniestro')]
OR
//span[@class='apexButtonText'][contains(text(),'Asociar Siniestro')]
OR
//button[@aria-label='Asociar Siniestro']//span[contains(.,'Asociar Siniestro')]
希望它会帮助你:)
什么是你得到 – SaiPawan
这个错误是我得到了异常:“没有这样的元素:找不到元素:{”方法“:”的XPath“” (会话信息:chrome = 60.0.3112.113) (驱动程序信息:chromedriver = 2.32.498550(9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform = Windows NT 6.1(选择器“:”//按钮[@ aria-label ='Asociar Siniestro']“} (警告:服务器没有提供任何堆栈跟踪信息)“ –
已更新my anwer –