我在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");
答案 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).Build().Perform();