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

谁能告诉我如何识别并切换到只有标题的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")));


慕的地10843
浏览 806回答 3
3回答

HUX布斯

您可以使用cssSelector,driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']")));

红糖糍粑

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']")));

慕森卡

在切换到框架之前,请确保切换到默认内容:driver.switchTo().defaultContent();driver.switchTo().frame(x);x可以是帧编号,也可以是a driver.findlement并使用可用的任何选项,例如:driver.findElementByName("Name")。
打开App,查看更多内容
随时随地看视频慕课网APP