如果我注释掉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();
}
}
答案 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();