无法在Selenium C#中发送密钥

时间:2016-05-21 18:38:43

标签: c# selenium

我想打开一个新标签并关闭Selenium中的第一个标签。

所以,我使用p方法来做到这一点。

但我的问题是当我打开新标签时,我无法继续使用SendKeys方法切换到我的第一个标签并关闭当前标签。 输入while循环时,SendKeysSendKeys都无效。

我尝试使用此javascript代码:

ExecuteJS

但它也无效。

我的代码是这样的:

browser.ExecuteJS("window.close();");

我使用方法IWebElement body = browser.FindElementByTagName("body"); //browser.ExecuteJS("window.open();"); body.SendKeys(OpenQA.Selenium.Keys.Control + 't'); browser.DeleteAllCookies(); Thread.Sleep(50); while (browser.GetWindowNum() > 1) { body.SendKeys(OpenQA.Selenium.Keys.Control + OpenQA.Selenium.Keys.Tab); body.SendKeys(OpenQA.Selenium.Keys.Control + 'w'); //browser.ExecuteJS("window.close();"); _tmExcute = DateTime.Now; } browser.GoToUrl(link); browser.WaitForPageToLoad(); 来检查制表符的数量是否大于1。 这是我的代码,用于检查浏览器中的标签数量:

GetWindowNum()

1 个答案:

答案 0 :(得分:2)

您只需切换第一个窗口并使用驱动程序和WindowHandles

关闭它
ReadOnlyCollection<string> windowHandles = wd.WindowHandles;  
string firstWindow = windowHandles.ElementAt(0); //first window handle at 0 index

foreach (string handle in windowHandles) { //Gets the new window handle  
  if(handle == firstWindow) {
    wd.switchTo().window(handle); // switch focus of WebDriver to the first window
    wd.close(); //close that window       
    break;
  }
}