C#中的Selenium Webdriver。控制键未释放

时间:2017-01-31 23:49:08

标签: c# selenium

我在C#中遇到了Selenium Webdriver的一些奇怪的行为。在我的场景中,我需要在新选项卡中打开图像,对图像进行一些操作并关闭选项卡。看起来由于某种原因,在关闭选项卡后不会释放Control键(即,当我尝试使用鼠标滚轮滚动时,浏览器会在单击时打开新选项卡中的链接并更改页面比例)。这是代码:

 var element = driver.FindElement(By.Id("mainImage"));
 Actions action = new Actions(driver);
 action.ContextClick(element).
     SendKeys(OpenQA.Selenium.Keys.ArrowDown).
     SendKeys(OpenQA.Selenium.Keys.ArrowDown).
     SendKeys(OpenQA.Selenium.Keys.ArrowDown).
     SendKeys(OpenQA.Selenium.Keys.Return).Build().Perform();
 driver.FindElement(By.CssSelector("body")).SendKeys(OpenQA.Selenium.Keys.Control + "t");
 string imglink = "";
 if (Clipboard.ContainsText(TextDataFormat.Text))
 {
     imglink = Clipboard.GetText(TextDataFormat.Text).ToString();
 }
 driver.Navigate().GoToUrl(imglink);
 var img1name = takeScreenshot(link, brandJoined);
 driver.FindElement(By.CssSelector("body")).SendKeys(OpenQA.Selenium.Keys.Control + "w");

2 个答案:

答案 0 :(得分:0)

Keys.Control仅切换控制按钮的状态。所以尝试使用:

driver.FindElement(By.CssSelector("body")).
    SendKeys(OpenQA.Selenium.Keys.Control + "t" + OpenQA.Selenium.Keys.Control);

第一个按下控制按钮,第二个按钮将释放它。

答案 1 :(得分:0)

我知道这个问题刚才被问到了。我遇到了同样的问题,我找到了解决方案。

这是因为Alt键和Ctrl键都是切换键

下面的代码按下ctrl键,然后发送t然后释放ctrl键。

        Actions action = new Actions(driver);

        action.KeyDown(Keys.Control).SendKeys("t").KeyUp(Keys.Control).B‌​uild().Perform();