【问题标题】:How to force Selenium to ignore ctrl/shift actions made in other application?如何强制 Selenium 忽略其他应用程序中的 ctrl/shift 操作?
【发布时间】:2013-11-20 11:28:03
【问题描述】:

我有一个测试,其中许多“点击链接”操作会持续几分钟。 问题出在这里: - 在测试期间,我多次点击不同的链接, - 后台测试运行,webdriver窗口没有焦点 - 我当时使用其他应用程序(文本或代码编辑器),当我按下 shift/ctrl 按钮时,Webdriver 会捕获它并在新窗口/选项卡中打开链接。

Webdriver 执行 click+shift(或 click+ctrl)操作真的很意外。我的测试因此而失败。 Webdriver 使窗口和选项卡倍增,并在一段时间后丢失句柄/上下文。

有什么方法可以防止 Webdriver 捕获在其他应用程序中按下的 ctrl/shift 键?

更多信息和代码示例

触发此问题的非常简单的方法... C# 中的代码:

 for (int i = 0; i < 20; i++)
            {        
            driver.Navigate().GoToUrl("google.com");
            driver.FindElement(By.Id("gbqfq")).Clear();
            driver.FindElement(By.Id("gbqfq")).SendKeys("were you naughty or nice this year");
            driver.FindElement(By.Id("gbqfq")).SendKeys(Keys.Enter);
            System.Threading.Thread.Sleep(500);
            driver.FindElementByClassName("r").Click();
            System.Threading.Thread.Sleep(500);
            }

测试运行时:

  • 打开记事本
  • 按住 Shift 键
  • 一段时间后,您应该会注意到 Webdriver 打开了新窗口
  • 如果您按住 Ctrl 按钮,它会打开新标签页
  • 如果您最小化 Webdriver 窗口,也会出现问题 - 它仍会捕获键盘操作

【问题讨论】:

  • 作为一个选项,您可以尝试使用一些带有限制键捕获的虚拟显示器来运行测试
  • 感谢您的回复。我知道这个选项,但我无法在当前的特定测试中使用它。
  • 我添加了一个代码示例来澄清这个问题。
  • 这里没有windows,以后试试。还有一个问题:如何初始化 webdriver 实例?
  • 只是标准:IWebDriver driver = new FireFoxrDriver();没有任何技巧、设置或浏览器配置文件。

标签: c# selenium-webdriver


【解决方案1】:

当您使用修饰键(Shift、Ctrl)时,它们不会自动释放:键在后台保持按下状态。

要解决这个问题,您可以将 Keys.Null 发送到应用程序,这将释放修饰键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多