当帧没有id时,如何识别并切换到selenium webdriver中的帧

Sun*_*ali 26 testing selenium 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">
Run Code Online (Sandbox Code Playgroud)

我试过下面的代码,但它不起作用

driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
Run Code Online (Sandbox Code Playgroud)

Yi *_*eng 39

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

  1. driver.switchTo().frame(name_or_id)
    在这里你iframe没有id或名字,所以不适合你.

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

  3. 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']")));
Run Code Online (Sandbox Code Playgroud)


Ami*_*ith 25

你可以使用cssSelector,

driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[title='Fill Quote']")));
Run Code Online (Sandbox Code Playgroud)