如何使用Java在Selenium WebDriver中切换帧


2 Answers

切换到一个框架:

driver.switchTo.frame("Frame_ID");

再次切换到默认值。

driver.switchTo().defaultContent();
Question

我正在使用Java与WebDriver.I必须在两帧之间切换。 我已经在selenium IDE中记录了测试用例,并且我得到的值为selectFrame relative = top select Frame = middle Frame

但是有一个问题是它无法识别relative = top和middleFrame。 如何使用Java在Selenium WebDriver中解决此问题?




这段代码很时髦,所以很可能你需要做一些返工。 第一个参数是一个网址,第二个是限制尝试的计数器。

public boolean selectWindow(window, maxTries) {
    def handles
    int tries = 0
    while (true) {
        try {
            handles = driver.getWindowHandles().toArray()
            for (int a = handles.size() - 1; a >= 0 ; a--) { // Backwards is faster with FF since it requires two windows
                try {
                    Log.logger.info("Attempting to select window: " + window)
                    driver.switchTo().window(handles[a]);
                    if (driver.getCurrentUrl().equals(window))
                        return true;
                    else {
                        Thread.sleep(2000)
                        tries++
                    }
                    if (tries > maxTries) {
                        Log.logger.warn("Cannot select page")
                        return false
                    }
                } catch (Exception ex) {
                    Thread.sleep(2000)
                    tries++
                }
            }
        } catch (Exception ex2) {
            Thread.sleep(2000)
            tries++
        }
    }
    return false;
}



您还可以使用:

driver.switch_to.frame(0)

(0)是html上的第一个iframe。

切换回默认内容:

driver.switch_to.default_content()



Related