问题在POPUP窗口关闭后,父窗口元素无法单击

时间:2017-07-18 12:59:22

标签: java selenium selenium-webdriver webdriver geckodriver

OS: Windows 10

Selenium版本: 3.4.0

浏览器: Mozila Firefox

浏览器版本: 54.0.1(64位)

GreckoDriver版本: v0.18.0

描述:问题面对POPUP窗口后。元素无法在下一个窗口中单击。

ERROR:

POPUP By.name:btnClose

[13,25,50]

在任务中抛出了未编写的编码异常。

完整消息:TypeError:尝试获取资源时出现NetworkError。 全栈:

以下代码:

public static File pathBinary = new File("C:\\program files\\Mozilla Firefox\\firefox.exe");
    public static FirefoxBinary firefoxBinary = new FirefoxBinary(pathBinary);

    @SuppressWarnings("deprecation")
    public static WebDriver driver = new FirefoxDriver(firefoxBinary);

    public static WebDriverWait wait =new WebDriverWait(driver,60);
    public static String MainWindow=driver.getWindowHandle();

3 个答案:

答案 0 :(得分:1)

将来,提供更多代码(如果可能),以便我们更好地了解您的目标。看起来您的问题是将WebDriver的焦点切换到原始窗口。我用来做这个的方法是:

创建一个数组以容纳所有窗口句柄:

ArrayList<String> windowhandlesArray = new ArrayList<String> (driver.getWindowHandles());

将驱动程序焦点切换到新打开的弹出窗口

driver.switchTo().window(windowhandlesArray.get(1));

关闭弹出窗口

driver.close();

将驱动程序焦点切换回原始窗口

driver.switchTo().window(windowhandlesArray.get(0));

这应该有所帮助,除非我误解了你想要完成的事情。

答案 1 :(得分:0)

我认为你必须确保你已经切换回主窗口句柄,在弹出窗口关闭后尝试使用它。

driver.switchTo().window(0);

然后尝试搜索元素

答案 2 :(得分:0)

或者你可以尝试:

再次切换到默认值。

foo_ids = Foo.objects.annotate(first_c=Count('first'), second_c=Count('second')).filter(first_c__gt=1, second_c__gt=1).values('first', 'second', 'id')

切换到一个框架:

driver.switchTo().defaultContent();