Selenium Webdriver 尝试使用 'ctrl + t' 打开选项卡 - Javascript
Selenium Webdriver trying to use 'ctrl + t' to open a tab - Javascript
我是 运行 Selenium Webdriver 来测试正在开发的 Web 应用程序(到目前为止我已经创建了很多测试)。我一直在尝试在 Selenium 打开的 window 中打开几个新选项卡,但到目前为止没有成功。我查看了很多不同的解决方案,但其中大部分针对 Java 或 Python,我正在使用 Javascript(我需要使用 Javascript)。
Selenium Webdriver:v.3.1.0
OS:Xubuntu 16.04
浏览器:Chrome 55.0.2883.87 和 Firefox 50.1.0
我尝试过各种解决方案,包括:
动作序列,在 Chrome 和 Firefox 中什么都不做,但在 Firefox 中抱怨:
driver.actions().keyDown(Key.CONTROL).sendKeys('n').keyUp(Key.CONTROL).perform();
使用 Key.chord(),这不会导致错误,没有反应,但它确实会发送密钥 - Firefox 在按下按钮后给出一个奇怪的字符代码
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
我认为这意味着它们已被点击。但是,没有反应,也没有创建选项卡。任何地方都没有错误显示,没有抱怨。没有什么。我不确定这是错误还是问题还是我可能做的不对。所以如果有人有任何想法,请帮助。
要打开新标签页,您可以尝试使用
driver.executeScript('window.open();');
尝试使用以下(机器人 Class):
Robot robo = new Robot();
robo.keyPress(KeyEvent.VK_CONTROL);
robo.keyPress(KeyEvent.VK_T);
robo.keyRelease(KeyEvent.VK_CONTROL);
robo.keyRelease(KeyEvent.VK_T);
protected void openNewTab(String url) {
((JavascriptExecutor) driver).executeScript("window.open('" + url + "','_blank');");
}
使用此方法打开带有 url
的新标签页
我是 运行 Selenium Webdriver 来测试正在开发的 Web 应用程序(到目前为止我已经创建了很多测试)。我一直在尝试在 Selenium 打开的 window 中打开几个新选项卡,但到目前为止没有成功。我查看了很多不同的解决方案,但其中大部分针对 Java 或 Python,我正在使用 Javascript(我需要使用 Javascript)。
Selenium Webdriver:v.3.1.0 OS:Xubuntu 16.04 浏览器:Chrome 55.0.2883.87 和 Firefox 50.1.0
我尝试过各种解决方案,包括:
动作序列,在 Chrome 和 Firefox 中什么都不做,但在 Firefox 中抱怨:
driver.actions().keyDown(Key.CONTROL).sendKeys('n').keyUp(Key.CONTROL).perform();
使用 Key.chord(),这不会导致错误,没有反应,但它确实会发送密钥 - Firefox 在按下按钮后给出一个奇怪的字符代码
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
我认为这意味着它们已被点击。但是,没有反应,也没有创建选项卡。任何地方都没有错误显示,没有抱怨。没有什么。我不确定这是错误还是问题还是我可能做的不对。所以如果有人有任何想法,请帮助。
要打开新标签页,您可以尝试使用
driver.executeScript('window.open();');
尝试使用以下(机器人 Class):
Robot robo = new Robot();
robo.keyPress(KeyEvent.VK_CONTROL);
robo.keyPress(KeyEvent.VK_T);
robo.keyRelease(KeyEvent.VK_CONTROL);
robo.keyRelease(KeyEvent.VK_T);
protected void openNewTab(String url) {
((JavascriptExecutor) driver).executeScript("window.open('" + url + "','_blank');");
}
使用此方法打开带有 url
的新标签页