【问题标题】:C# Selenium Webdriver JavaScriptExecutor Prompt WindowC# Selenium Webdriver JavaScriptExecutor 提示窗口
【发布时间】:2023-08-04 14:26:01
【问题描述】:

我有一个我正在尝试处理的 JavaScript 提示窗口。我以前有一个只包含一个“OK”和“Cancel”,我可以用它来处理

((IJavaScriptExecutor)ts.getDriver()).ExecuteScript("window.confirm = function(){return true; }")

但是现在我有另一条提示消息,但这一次需要我向提示消息发送文本,然后点击“确定”。我对javascript并不熟悉,任何人都可以提供将文本发送到提示框的语法吗?

更新:我尝试自动化的应用程序已生成 Windows 提示。在过去,我用

处理了大多数警报弹出窗口
.SwitchTo().Alert().Accept();   

但是这个特定的 Windows 提示(请参阅图片示例)

无法以这种方式捕获,因此我使用 JavaScript 来处理弹出窗口。我在顶部引用第一段代码的原因是因为我用来处理第一个窗口提示的这段特殊代码。不同之处在于这次 Windows 提示框有一个“确定”按钮、一个“取消”按钮和一个文本框,我必须在其中输入某种文本才能关闭提示框。我想找出的只是我使用什么语法来处理将文本发送到这个 Windows 提示符,例如:

((IJavaScriptExecutor)ts.getDriver()).ExecuteScript("window.confirm = function(){return true; }");

用于关闭“确定”提示消息,但对于带有文本的提示框,我应该在 ExecuteScript 中写入什么

((IJavaScriptExecutor)ts.getDriver()).ExecuteScript("???");

所以基本上我应该在问号所在的地方写什么脚本。

【问题讨论】:

  • 请阅读如何提问。
  • How To Ask A Good Question。此处可使用的信息很少,请考虑发布更多代码。
  • 我做了更新,请阅读以上内容

标签: javascript c# selenium-webdriver


【解决方案1】:

所以这一定是 Selenium 的一个非常常见的用例;我的经验有限。然而,谷歌搜索,我发现了以下内容:

Alert alert = driver.SwitchTo().Alert();
driver.SwitchTo().Alert().SendKeys("Hello");
alert.Accept();

(来自SeleniumEasy

我修复了 C# 实现的驼峰式案例;原始示例是用 Java 编写的。

【讨论】:

  • 谢谢我意识到这个提示框实际上允许我使用警报方法,但我仍然很好奇是否有人可以告诉我如何为 JavaScriptExecutor 实现文本
  • 是的,我不知道你会怎么做,因为它在页面之外。我很惊讶您的 confirm/return true 代码有效。