Selenium Webdriver试图使用' ctrl + t'打开标签页 - Javascript

时间:2017-03-08 11:31:15

标签: javascript selenium selenium-webdriver tabs sendkeys

我正在运行Selenium Webdriver来测试正在开发的Web应用程序(到目前为止我已经创建了很多测试)。我一直试图在Selenium打开的窗口中打开一些新标签但到目前为止没有成功。我查看了很多不同的解决方案,但大多数是Java或Python,我使用Javascript(我需要使用Javascript)。

Selenium Webdriver:v.3.1.0 操作系统:Xubuntu 16.04 浏览器:Chrome 55.0.2883.87和Firefox 50.1.0

我尝试了各种解决方案,包括:

  • 动作序列,在Chrome和Firefox中都不起作用,但在Firefox中抱怨:

    driver.actions()的keyDown(Key.CONTROL).sendKeys(' N&#39)使用keyUp(Key.CONTROL).perform();

  • 使用Key.chord(),导致没有错误,没有反应,但确实发送了密钥 - Firefox按下按钮后给出一个奇怪的charCode

    driver.findElement(By.css(" body"))。sendKeys(Key.chord(Key.CONTROL,' t'));

  • 仅限Key.CONTROL,这也导致没有错误,没有反应,但确实发送了密钥 - Firefox按下按钮后给出了一个奇怪的charCode

    driver.findElement(By.css(" body"))。sendKeys(Key.CONTROL +" t");

我目前所做的是将驱动程序导航到一个带有javascript按键检测的网站,看看他们是否在“aaa'之后点击了”。 :

driver.get("http://unixpapa.com/js/testkey.html");
driver.findElement(By.css("body")).sendKeys("aaa");
driver.findElement(By.css("body")).sendKeys(Key.CONTROL + "t");

这导航到页面,它在页面检测区域上输出:

keydown  keyCode=17        which=17        charCode=0        
keydown  keyCode=84  (T)   which=84  (T)   charCode=0        
keypress keyCode=116 (t)   which=116 (t)   charCode=116 (t)  
keyup    keyCode=84  (T)   which=84  (T)   charCode=0        
keyup    keyCode=17        which=17        charCode=0  

我认为这意味着他们已被点击。但是,没有反应,也没有创建标签。没有错误显示在任何地方,没有抱怨。没有。我不确定这是一个错误或问题,还是我可能做得不对的事情。如果有人有任何想法,请帮助。

3 个答案:

答案 0 :(得分:1)

要打开新标签页,您可以尝试使用

driver.executeScript('window.open();');

答案 1 :(得分:0)

尝试使用以下(机器人类):

   Robot robo = new Robot();
   robo.keyPress(KeyEvent.VK_CONTROL);
   robo.keyPress(KeyEvent.VK_T);
   robo.keyRelease(KeyEvent.VK_CONTROL);
   robo.keyRelease(KeyEvent.VK_T);

答案 2 :(得分:0)

protected void openNewTab(String url) {
        ((JavascriptExecutor) driver).executeScript("window.open('" + url + "','_blank');");
    }

使用此方法打开带有网址

的新标签页