首页 > 解决方案 > 如何使用操作类在相邻窗口或选项卡中打开链接(上下文单击元素-> sendkeys ArrowDown -> sendkeys Enter)

问题描述

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

我已经尝试在具有多个应用程序的 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();

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

标签: javaseleniumselenium-webdriverwebdriverwebdriverwait

解决方案


要在相邻的选项卡/窗口中打开带有文本作为Selenium 问题的链接,您可以使用以下解决方案:

  • 代码块:

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

新标签


推荐阅读