Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/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
Java selenium firefox模式显示为弹出窗口,而不是模式_Java_Selenium_Modal Dialog - Fatal编程技术网

Java selenium firefox模式显示为弹出窗口,而不是模式

Java selenium firefox模式显示为弹出窗口,而不是模式,java,selenium,modal-dialog,Java,Selenium,Modal Dialog,我正在尝试使用Selenium在一个包含多个页面的网站上测试表单。根据所选的选项,假设某些页面上会出现模态。目前,我很难让Selenium与Fireforx和modals正常工作。Chrome的表现与预期相符,我还没有为IE而烦恼 当我使用Firefox手动浏览页面时,一切都按预期进行 当我运行Selenium脚本时,模式显示为Windows弹出窗口,而不是模式 我正在使用driver.switchTo().alert().accept()来处理模态,我遇到的第一个模态将关闭,但是一旦我进入

我正在尝试使用Selenium在一个包含多个页面的网站上测试表单。根据所选的选项,假设某些页面上会出现模态。目前,我很难让Selenium与Fireforx和modals正常工作。Chrome的表现与预期相符,我还没有为IE而烦恼

  • 当我使用Firefox手动浏览页面时,一切都按预期进行
  • 当我运行Selenium脚本时,模式显示为Windows弹出窗口,而不是模式
我正在使用driver.switchTo().alert().accept()来处理模态,我遇到的第一个模态将关闭,但是一旦我进入下一页,Selenium代码就无法在页面上找到任何元素

下面是我用来单击按钮的代码:

public void pushButton(String[] values) {
    System.out.println("\t Click (" + values[1] + ")");
    setLocator(values[0], values[1]);

    try {
        clickWhenReady(locator).click();
    } catch (Exception e) {
        System.out.println("Could not find id or xpath value: " + values[1]);
        e.printStackTrace();
    }
}

private void setLocator(String byType, String value) {
    if(byType.toUpperCase().equals("ID")) {
        locator= By.id(value);
    } else if(byType.toUpperCase().equals("XPATH")){
        locator= By.xpath(value);
    }
}

private WebElement whenReady(By locator){
    WebElement element = (new WebDriverWait(driver, 30))
            .until(ExpectedConditions.presenceOfElementLocated(locator));
    return element;
}

private WebElement clickWhenReady(By locator){
    WebElement element = (new WebDriverWait(driver, 30))
            .until(ExpectedConditions.elementToBeClickable(locator));
    return element;
}

首先,
modals
不是
alerts
所以,
driver.switchTo().alert().accept()可能不会给你买任何东西

真正的问题可能是modals淡出和阻塞
Selenium
与页面交互所需的时间更长。您最好的选择是尝试等待模态从dom中完全消失,然后尝试与元素交互。为此,您可以使用
ExpectedConditions
invisibilityOfElementLocated
或类似机制。看