为了账号安全,请及时绑定邮箱和手机立即绑定

当框架没有ID时如何在Selenium Webdriver中识别并切换到框架

当框架没有ID时如何在Selenium Webdriver中识别并切换到框架

慕的地10843 2019-12-02 13:11:30
谁能告诉我如何识别并切换到只有标题的iframe?<iframe frameborder="0" style="border: 0px none; width: 100%; height: 356px; min-width: 0px; min-height: 0px; overflow: auto;" dojoattachpoint="frame" title="Fill Quote" src="https://tssstrpms501.corp.trelleborg.com:12001/teamworks/process.lsw?zWorkflowState=1&zTaskId=4581&zResetContext=true&coachDebugTrace=none">我已经尝试通过下面的代码,但不能正常工作driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

您可以使用cssSelector,


driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']")));


查看完整回答
反对 回复 2019-12-02
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

driver.switchTo().frame() 有多个重载。


driver.switchTo().frame(name_or_id)

在这里,您iframe没有ID或名称,因此不适合您。


driver.switchTo().frame(index)

这是最后选择的选项,因为使用索引不够稳定,可以想象。如果这是您页面中唯一的iframe,请尝试driver.switchTo().frame(0)


driver.switchTo().frame(iframe_element)

最常见的一种。您可以像其他元素一样定位iframe,然后将其传递到方法中。


在这里按title属性定位似乎是最好的。


driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']")));

// driver.switchTo().frame(driver.findElement(By.xpath(".//iframe[@title='Fill Quote']")));


查看完整回答
反对 回复 2019-12-02
?
慕森卡

TA贡献1806条经验 获得超8个赞

在切换到框架之前,请确保切换到默认内容:


driver.switchTo().defaultContent();

driver.switchTo().frame(x);

x可以是帧编号,也可以是a driver.findlement并使用可用的任何选项,例如:driver.findElementByName("Name")。


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 841 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信