Selenium Webdriver试图使用';ctrl+;t';要打开选项卡,请使用Javascript
我正在运行SeleniumWebDriver来测试一个正在开发的web应用程序(到目前为止,我已经创建了很多测试)。我一直在尝试在Selenium打开的窗口中打开几个新选项卡,但迄今为止没有成功。我浏览了很多不同的解决方案,但大多数都是针对Java或Python的,我正在使用Javascript(我需要使用Javascript) Selenium Webdriver:v.3.1.0 OS:Xubuntu 16.04 浏览器:Chrome 55.0.2883.87和Firefox 50.1.0 我尝试过各种解决方案,包括:Selenium Webdriver试图使用';ctrl+;t';要打开选项卡,请使用Javascript,javascript,selenium,selenium-webdriver,tabs,sendkeys,Javascript,Selenium,Selenium Webdriver,Tabs,Sendkeys,我正在运行SeleniumWebDriver来测试一个正在开发的web应用程序(到目前为止,我已经创建了很多测试)。我一直在尝试在Selenium打开的窗口中打开几个新选项卡,但迄今为止没有成功。我浏览了很多不同的解决方案,但大多数都是针对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在按下按钮后会给出一个奇怪的字符码 driver.findElement(By.css(“body”)).sendKeys(Key.CONTROL+“t”)
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
我相信这意味着他们已经被点击了。但是,没有反应,也没有创建选项卡。任何地方都没有显示错误,没有投诉。没有什么。我不确定这是一个bug还是一个问题,或者是我可能做得不对的事情。因此,如果有人有任何想法,请帮助。要打开新选项卡,您可以尝试使用
driver.executeScript('window.open();');
尝试使用以下(机器人类):
使用此方法打开带有url的新选项卡嗨,Andersson,谢谢你的回答。我相信这会打开一扇新的窗户,对吗?我需要在窗户把手之间切换,这是我的安全网。但是,我想知道我是否可以打开新选项卡而不是windows。这取决于您使用的浏览器和个人设置。尝试检查它是否在您的案例中打开窗口或选项卡。还要注意的是,即使打开了新选项卡,您仍然需要使用
driver.switch\u to.window(driver.window\u句柄[-1]
)切换到它…哇,它确实打开了一个新选项卡。我一直在避免这样做,因为我认为这只是为了打开一个窗口,而不是一个标签。好极了非常感谢,救了我一天:)。是的,必须切换不是问题,但我确实想让它打开一个新的标签,这样做。再次感谢,欢迎。另外请注意,如果您想在新选项卡中打开URL
,您只需将其作为参数传递给open()
aswindow.open('https://google.com)
太棒了!是的,必须切换不是问题,但我确实想让它打开一个新的标签,这样做。再次感谢!嗨,库沙尔。谢谢你的回答。我用的是纯硒,我相信这是机器人框架,对吗?(不确定,因为我以前没有使用过它,而且对Selenium来说还很新)也不确定这是javascript。因为到目前为止,我已经有很多测试使用纯Selenium javascript绑定在javascript中运行,所以继续使用它们对我来说很重要。
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');");
}