我想在新窗口中打开应用程序的链接。使用动作类可以在我当前所在的同一窗口中打开链接。
我尝试在具有多个应用程序的chrome驱动程序和firefox驱动程序上使用带有以下代码的Actions类,但均无效果。
System.setProperty("webdriver.gecko.driver", "D:\\MySpace\\AmozonEcomm\\Dependencies\\geckodriverv21.exe");
WebDriver driver = new FirefoxDriver(); //Creating an instance of Chrome driver
driver.manage().window().maximize();
driver.get("http://automate-apps.com/");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Actions action = new Actions(driver);
action.contextClick(driver.findElement(By.partialLinkText("Selenium Questions"))).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
我的期望是,该链接应在新窗口中打开,因为在上下文单击后我试图选择“在新窗口中打开链接”选项。但是evrytime链接在同一窗口中打开。
答案 0 :(得分:1)
要在相邻的标签/窗口中打开文字为 Selenium Questions (硒问题)的链接,可以使用以下解决方案:
代码块:
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("http://automate-apps.com/");
WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Selenium Questions")));
new Actions(driver).keyDown(Keys.CONTROL).click(elem).keyUp(Keys.CONTROL).build().perform();
浏览器快照:
答案 1 :(得分:1)
有两个选项可用于在新的窗口(而非标签页)中打开链接。
WebElement el = driver.findElement(By.partialLinkText("Selenium Questions"));
Actions action = new Actions(driver);
contextClick -contextClick()
可能会反复无常,在某些环境中,它只是拒绝获得与其他环境中相同的结果。
仍然,如果您要尝试使用它,请发送“ w”键-这是“在新窗口中打开”的快捷方式:
action.contextClick(el).perform();
action.sendKeys("w").perform(); // in two steps
按住Shift键单击-新窗口的快捷方式是按住Shift键单击,而不是按住Ctrl键单击新选项卡。只要浏览器支持,此方法的重复率就比contextClick()
高。
action.keyDown(Keys.SHIFT).click(el).keyUp(Keys.SHIFT).build().perform();