Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 用硒寻找活性iframe_Selenium_Iframe - Fatal编程技术网

Selenium 用硒寻找活性iframe

Selenium 用硒寻找活性iframe,selenium,iframe,Selenium,Iframe,我试图使用Selenium WebDriver浏览一个页面,但遇到了一个问题,该页面中最多有3个iFrame,但只有一个处于活动状态,而其他iFrame设置为显示:无 每次我从一个页面移动到另一个页面时,新页面都会加载到另一个iframe中,但它似乎没有模式,因此我无法使用 _driver.findElements(By.tagName("iframe")).get(index); iFrame如下所示: <iframe id="IF0" class="SOMETHING" width=

我试图使用Selenium WebDriver浏览一个页面,但遇到了一个问题,该页面中最多有3个iFrame,但只有一个处于活动状态,而其他iFrame设置为显示:无 每次我从一个页面移动到另一个页面时,新页面都会加载到另一个iframe中,但它似乎没有模式,因此我无法使用

_driver.findElements(By.tagName("iframe")).get(index);
iFrame如下所示:

<iframe id="IF0" class="SOMETHING" width="100%" scrolling="no" height="100%" frameborder="0" target="main" src="../myPath/Blank.html" name="IF0" style="position: absolute; border-width: 0px; width: 100%; height: 100%; display: block; z-index: 10;">

<iframe id="IF1" class="SOMETHING" scrolling="no" frameborder="0" name="IF1" style="display: none; position: absolute; width: 100%; height: 100%; overflow: hidden; z-index: -1;">

<iframe id="IF2" class="SOMETHING" scrolling="no" frameborder="0" name="IF2" style="display: none; position: absolute; width: 100%; height: 100%; overflow: hidden; z-index: -1;">

但它不起作用。有没有其他方法可以在不使用异常逐个加载iframe的情况下找出哪个iframe是可见的

请尝试使用此代码。它将切换到iframe,其中“target attribute”为“main”,而“display attribute”为“block”:

编辑 否则,如果一次只能看到一帧,请尝试以下代码切换到该帧:

driver.switchTo().frame(0);

也不起作用,有趣的是,我似乎总是得到一个iframe,但却是错误的。我正在切换到我的默认内容并调用一个线程。睡眠以补偿任何延迟,但我仍然得到旧帧。。。在最后一次尝试中,我做到了[notcontains@style,'display:none']您是否收到任何错误/异常?在切换到iframe之后,您打算做什么?我只是得到了错误的帧,稍后当我尝试访问此帧中不存在的另一个元素时会发生异常。检查您想要得到的元素,并检查Firebug中Firepath面板左上角的iframe id。然后,您将获得要切换到的确切帧。此外,请尝试上面“编辑”下的编辑代码切换到框架。问题是,该网站是通用的,每次加载新页面时,它都以不清晰的模式加载到其中一个框架中,因此无法使用id找到正确的框架,因为它不为人所知。html源代码中的顺序不会更改,因此其为.frame0、1或2。驾驶员是否可能无法识别属性目标或显示值的变化?
try{
  WebDriverWait wait1 = new WebDriverWait(_driver, 60);
  wait1.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@target='main' and @display='block']")));
}catch(Throwable e){
  System.err.println("Error while switching to frame. "+e.getMessage());
}
driver.switchTo().frame(0);