如何使用 JavaScript 处理弹出警报? Selenium 网络驱动程序
Posted
技术标签:
【中文标题】如何使用 JavaScript 处理弹出警报? Selenium 网络驱动程序【英文标题】:How to handle alert pop up with JavaScript? Selenium Webdriver 【发布时间】:2017-01-16 19:36:00 【问题描述】:Selenium WebDriver 2.53.1.1 视觉工作室 2015 C#
我正在测试的应用程序具有警报弹出窗口,我使用以下代码处理它没有问题
ts.getDriver().SwitchTo().Alert().Accept();
但是我遇到了一个新问题。我的一些 webelements 有不再被发现的问题,因此我必须运行 javascript 来执行 web 元素(请参阅下面的代码来处理 web 元素)
public void SelectHREFCID()
IJavaScriptExecutor js = ts.getDriver() as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].click()",hrefCID);
try
ts.getDriver().SwitchTo().Alert().Accept();
catch (NoAlertPresentException)
// do nothing...
// Have to use this to find the hyperlink!
唯一的问题是在 js.ExecuteScript 行运行后立即弹出显示和我的 Alert().Accept() 代码行在此之后永远不会触发,因此程序只是在弹出窗口时停止。我在调试中逐行运行,一旦执行 js.ExecuteScript 行,就无法进入下一行。有关如何处理此问题的任何建议?
更新此时在我的代码中(js.ExecuteScript))
,这行代码一执行我就看到了
一旦此弹出窗口显示 My Selenium Code does not continue into the try catch statement to handle the Alert
截至 9 月 9 日的最新更新
我尝试了两种方式的警报句柄
但是我的 selenium 代码在弹出窗口触发时停止执行
js.ExecuteScript("arguments[0].click().hrefCID);
**更新 09/12****
我更新了 window.alert,这解决了问题(确认)
IJavaScriptExecutor js = ts.getDriver() as IJavaScriptExecutor;
js.ExecuteScript("window.confirm = function()return true;");
js.ExecuteScript("arguments[0].click()",hrefCID);
// js.ExecuteScript("window.alert = function() return true;");
【问题讨论】:
不清楚你在问什么??program just stops there with the pop up
是什么意思??有什么异常还是别的什么??
抱歉有任何混淆。基本上,如果我在调用 Web.Element.Click 时使用 Alert().Accept() 它将执行这行代码。 (我肯定知道这一点 b/c 我的一些 web 元素在弹出窗口显示时工作正常,但是因为我正在通过 javascript 执行 web 元素操作,所以它从不尝试执行之后弹出的警报。我希望这能让更多感觉。
您的意思是 JavaScript 单击不会打开弹出窗口。对吧??
运行 javascript 代码后不会立即打开弹出窗口,但我的 Selenium 代码此时无法继续
更新了我上面的窗口警报声明,这解决了我的问题。谢谢@SaruabhGaur 如果您会回复答案,我会给您信用!再次感谢您!
【参考方案1】:
我认为此警报会阻止代码执行,您应该在单击之前执行此脚本以使用 js as 覆盖confirmBox
函数:-
js.ExecuteScript("window.confirm = function() return true;")
之后执行如下执行点击按钮:-
js.ExecuteScript("arguments[0].click()",hrefCID);
【讨论】:
以上是关于如何使用 JavaScript 处理弹出警报? Selenium 网络驱动程序的主要内容,如果未能解决你的问题,请参考以下文章