Selenium没有确定'iframe'

时间:2015-09-15 06:24:59

标签: selenium selenium-webdriver webdriver

下面是我的代码

driver.switchTo().frame(driver.findElement(By.id("file")));

以上行未运行

2 个答案:

答案 0 :(得分:0)

切换到帧有多种方法。如果您需要确切的代码切换到相应的应用程序,请分享HTML代码。你可以试试下面的方法。如果您的框架没有任何名称等,请更好地使用索引

driver.switchTo().frame(index)

首先将索引替换为0,如果不起作用,则逐个尝试1然后再使用2等

更多详情

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,然后将其传递给方法。

这里按标题属性定位似乎是最好的。

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

答案 1 :(得分:0)

最有可能的是,您的iframe不可见或您的窗口未处于活动状态。

Python中的

  BackgroundJob.Enqueue(() => new MyJob().Execute(path));
Java中的

    driver.switch_to_default_content()
    wait.until(EC.frame_to_be_available_and_switch_to_it("yourFrame"))