driver.findElement(By.xpath("//input[@value='添加']")).click();
//Pops out an Alert and program stops, does not continue
how to click the alert?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
啊啊啊啊 怎么没有人呢? (TRANS: ahahahahaha why there is no one here to reply my post?)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我顶 (TRANS: Let me promote this post!)
As of the latest selenium 2 release, this can be done (at least using the FirefoxDriver):
driver.switchTo().alert().accept();
In previous version of Selenium 2 I have had no choice that to handle alerts in Internet Explorer by overriding the window.alert in Javascript:
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
// Override window.alert to store the prompt and accept it automatically
js.ExecuteScript("window.alert = function(msg) { document.bAlert = true; document.lastAlert=msg; }");
// Do some stuff...
// Check for alert
Object o = js.ExecuteScript("return document.bAlert");
if (o != null && (bool)o == true)
{
//retrieve the alert message
o = js.ExecuteScript("return document.lastAlert");
// Do something with the alert text
}
Selenium 2.0b3 has support for handling Alerts in IE and Firefox, so you can do the following:
IAlert alert = driver.SwitchTo().Alert();
// Get the text from the alert
string alertText = alert.Text;
// Accept the alert
alert.Accept();
However, I have not been able to get the above to work with Yes/No alerts (Dismiss() works for No but Accept() doesn't work for Yes). I'm in the process of looking at the IEDriver to work out why this is.
In Selenium 2, currently alerts are only handled in the Firefox browser. You don't specify what language you're using for your tests, but here's how to handle an alert using ruby. (This is taken from theRuby Bindings pageon the selenium wiki).
Javascript Alert/Confirm
You can use webdriver to handle javascript alert and confirm dialogs. The implementation for both is the same.
Note: At this time the API is only available in Firefox (or in Firefox using the remote server), and only alert/confirms that are generated post load can be captured.
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://mysite.com/page_with_alert.html"
driver.find_element(:name, 'element_with_alert_javascript').click
a = driver.switch_to.alert
if a.text == 'A value you are looking for'
a.dismiss
else
a.accept
end
C# code:
IAlert alert = driver.SwitchTo().Alert();
alert.Accept();
System.Threading.Thread.Sleep(milliseconds);
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://skynet:8081/1.htm");
var selenium = new WebDriverBackedSelenium(driver, driver.Url);
selenium.Start();
selenium.Click("css=input[type=button]");
Assert.AreEqual(selenium.GetConfirmation(), "Are you sure?");
Assert.AreEqual("OK", selenium.GetAlert());
// <input type="button" value="Alert test" />
driver.Quit();
Alert alert = driver.switchTo().alert();
alert.accept();
If you want to cancel the pop up use the following instead of alert.accept(): alert.dismiss();
You will have to handle exception and run your handler code for Alert, for Java:
try{
driver.findElement(By.xpath("//input[@value='添加']")).click();
} catch(org.openqa.selenium.UnhandledAlertException e){
Alert alert = driver.switchTo().alert();
alert.accept();
// you logic here what you want to do next
}
Catch this exception, and then you can accordingly accept or reject alert.
分享到:
相关推荐
Selenium2.0+Webdriver学习,介绍了Selenium2.0,并举例,很好的资料
Selenium 客户端和 WebDriver 语言绑定(Selenium Clients and WebDriver Language Bindings)适用于C#语言 为了创建与 Selenium Server (Remote WebDriver) 交互的脚本或创建本地 Selenium WebDriver 脚本,您需要...
selenium RC与selenium webdriver的区别
Selenium2.0+Webdriver学习,介绍了Selenium2.0,并举例,很好的资料
一共三部分,主要是对selenium基础方法的讲解,比如如何获取元素,如何操作元素等。 Selenium2.0之WebDriver学习总结(1)
selenium-webdriver-2.40.0.gem
Selenium-Webdriver系列教程 Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代。 不过事实却并非如此,现今原本早应退役的...
WIN7-Selenium2(WebDriver)-Python环境搭建指南 一、 安装Python 版本选择:目前由于Python2.x使用更加广泛,且支持的包与库函数更加丰富,所以建议选择Python2.7版本。下载地址:www.python.org 安装:参考附件 二...
selenium2 webdriver的介绍 selenium2 webdriver的配置安装 selenium2 webdriver的基本操作 selenium2 webdriver使用技巧 ……
go-selenium, Selenium WebDriver 客户端 ==============================================去 selenium Selenium WebDriver 客户端go是一个 selenium的java客户端,用于 。注意:public A
selenium-webdriver原创selenium-webdriver原创selenium-webdriver原创selenium-webdriver原创
一共三部分,主要是对selenium基础方法的讲解,比如如何获取元素,如何操作元素等。 Selenium2.0之WebDriver学习总结(3)
selenium-webdriver-2.5.0.gem
Selenium2.0+Webdriver学习,介绍了Selenium2.0,并举例,很好的资料
主要介绍了selenium跳过webdriver检测并模拟登录淘宝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
firefoxDriver和selenium2.44
Selenium WebDriver 3.14.0 本来需要.net45 我改为.net2.0 希望喜欢的人需要。 dll 反编译,嵌入程序内。无需调用那个讨厌的dll。 绝对不骗人,骗人是小狗。架构复杂修改麻烦,各位体谅
个人最近开始学习Selenium,但发现对应python的有用的资料奇少无比,于是 自己努力收集并整理了一些资料 学会搭建环境后的同学,建议先抛弃其他一切资料,先看一遍这个python资料,保证收益匪浅,基本上可以动手做...
selenium webdriver2 环境搭建
[转载]Selenium2.0之WebDriver学习总结(2).docx