Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用actions类在相邻窗口或选项卡中打开链接(上下文单击element->;sendkeys箭头向下->;sendkeys Enter)_Java_Selenium_Selenium Webdriver_Webdriver_Webdriverwait - Fatal编程技术网

Java 如何使用actions类在相邻窗口或选项卡中打开链接(上下文单击element->;sendkeys箭头向下->;sendkeys Enter)

Java 如何使用actions类在相邻窗口或选项卡中打开链接(上下文单击element->;sendkeys箭头向下->;sendkeys Enter),java,selenium,selenium-webdriver,webdriver,webdriverwait,Java,Selenium,Selenium Webdriver,Webdriver,Webdriverwait,我想在新窗口中打开应用程序的链接。使用actions类正在打开我当前所在窗口中的链接 我曾尝试在chrome驱动程序和firefox驱动程序上使用Actions类和下面的代码,并使用了多个应用程序,但都不起作用 System.setProperty("webdriver.gecko.driver", "D:\\MySpace\\AmozonEcomm\\Dependencies\\geckodriverv21.exe"); WebDriver driver = new FirefoxDriver

我想在新窗口中打开应用程序的链接。使用actions类正在打开我当前所在窗口中的链接

我曾尝试在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();

我的期望是,链接应该在一个新窗口中打开,因为我试图在上下文单击后选择“在新窗口中打开链接”选项。但每次在同一窗口中打开链接时。

要在相邻选项卡/窗口中以文本形式打开链接,您可以使用以下解决方案:

  • 代码块:

    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();
    
  • 浏览器快照:


这里有两个选项可用于在新的窗口(非选项卡)中打开链接

contextClick-
contextClick()
可能反复无常,在某些环境中,它只是拒绝实现与在其他环境中相同的结果。
不过,如果您想尝试使用它,请发送“w”键-这是“在新窗口中打开”的快捷方式:


按住Shift键单击-新窗口的快捷方式是按住Shift键单击,而不是按住ctrl键单击以创建新选项卡。与
contextClick()
相比,这种方法具有更高的重复率-只要浏览器支持

action.keyDown(Keys.SHIFT).click(el).keyUp(Keys.SHIFT).build().perform();
action.contextClick(el).perform();
action.sendKeys("w").perform();  // in two steps
action.keyDown(Keys.SHIFT).click(el).keyUp(Keys.SHIFT).build().perform();