【问题标题】:How do I open a new tab in chrome using the Actions class如何使用 Actions 类在 chrome 中打开新选项卡
【发布时间】:2017-09-06 14:59:28
【问题描述】:

如何在 chrome 上打开新标签页。我需要从中获取一些数据,回到我之前的选项卡并输入数据。我知道如何遍历选项卡,但我无法打开新选项卡。

Selenium 版本:3.5.2
Chrome 版本:60

package Amazon;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class VerifyAmazonSignInPage {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.setProperty("webdriver.chrome.driver", "C://Selenium jars/chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        driver.get("http://www.amazon.in");
        driver.findElement(By.xpath("//span[text()='Hello. Sign in']")).click();
        driver.findElement(By.id("ap_email")).sendKeys("seleniumoar1234@gmail.com");
        driver.findElement(By.id("ap_password")).sendKeys("*****");
        driver.findElement(By.id("signInSubmit")).click();
        Actions act = new Actions(driver);
        act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform();
        driver.get("http://www.gmail.com");


    }

}

【问题讨论】:

标签: java eclipse selenium selenium-webdriver


【解决方案1】:

我用于Action class 的拇指规则是,仅用于模拟最终用户的鼠标操作。请勿将其用于其他目的。

在您的情况下,您需要将密钥发送到浏览器,您可以使用 WebDriver 接口的任何实现来做到这一点。那么,您希望如何打开新标签页?

最简单的方法是在 body 元素上发送 key 以打开新标签 -

   driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL + "t");

但在某些情况下,这不起作用,所以我更喜欢JavascriptExecutor,我在上面写了post,因为它是平台无关的解决方案。

  ((JavascriptExecutor) driver).executeScript("window.open('http://gmail.com/','_blank');");

请注意,打开新标签后,您必须注意switching tab, 它不会自动工作。

【讨论】:

  • 谢谢@4M01 我想知道是否可以使用动作类来完成,但无论如何这也很有帮助。
  • @GauravThantry Action 类也应该可以工作,但大多数情况下都会失败。这是我到目前为止所观察到的。 SendKeys 不是打开新标签的好习惯,它需要浏览器处于活动状态并且焦点在浏览器上。但是无论如何,Javascript都可以工作
【解决方案2】:

Action 类是一个 selenium 类,只能用于自动化基于 Web 的应用程序。打开新选项卡是在 Web 浏览器上执行的操作,它是一个独立的应用程序。这可以通过使用 java.awt 包中的 Robot 类来完成。

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    相关资源
    最近更新 更多