查看javascript警报时,driver.close无效

时间:2015-07-08 16:59:51

标签: java selenium

如果我注释掉driver.close()部分,则会正确执行以下代码。但是,如果我使用它运行程序,程序将失败并出错。

同样的程序在Chrome浏览器中不起作用,仅适用于Firefox。请建议!

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class JavaAlerts 
{
public static void main(String args[])
{
System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver= new FirefoxDriver();
driver.get("http://tizag.com/javascriptT/javascriptalert.php");
driver.findElement(By.xpath("//input[@value='Confirmation Alert']")).click();
driver.close();
}
}

3 个答案:

答案 0 :(得分:0)

您需要先切换()警报并先关闭警报并关闭驱动程序

答案 1 :(得分:0)

您必须switchToAlert然后Accept

 WebDriver driver = new FirefoxDriver();
    driver.get("http://tizag.com/javascriptT/javascriptalert.php");
    driver.findElement(By.xpath("//input[@value='Confirmation Alert']")).click();
    Alert alert=driver.switchTo().alert();
    System.out.println(alert.getText());
    alert.accept();
    driver.quit();

[来自您的评论代码]
一旦你切换到警报你不需要再次切换到警报,因为驱动程序目前处于警戒状态。将其分配给警报对象,然后接受它或打印它或做任何你想做的事情

答案 2 :(得分:0)

我与JUnit一起使用它在关闭时不会收到错误消息:

  @After
  public void quitDriver() throws Exception {


        // driver.quit();

      Runtime.getRuntime().exec("taskkill /F /IM firefox.exe");
      Thread.sleep(3000);
      Runtime.getRuntime().exec("taskkill /F /IM plugin-container.exe");
      Runtime.getRuntime().exec("taskkill /F /IM WerFault.exe");

  }

我也看到你们都在加载Crome属性并启动Firefox。 你应该做其中一个(不是一个很好的例子):

System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver= new FirefoxDriver();

//System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
//WebDriver driver= new ChromeDriver();
WebDriver driver= new FirefoxDriver();

或者

System.setProperty( "webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver= new ChromeDriver();
//WebDriver driver= new FirefoxDriver();