我正在运行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
我认为这意味着他们已被点击。但是,没有反应,也没有创建标签。没有错误显示在任何地方,没有抱怨。没有。我不确定这是一个错误或问题,还是我可能做得不对的事情。如果有人有任何想法,请帮助。
答案 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');");
}
使用此方法打开带有网址
的新标签页