【问题标题】:How to press CTRL+T and CTRL+TAB in selenium WebDriver using Java?如何使用 Java 在 selenium WebDriver 中按 CTRL+T 和 CTRL+TAB?
【发布时间】:2017-01-13 07:22:30
【问题描述】:

大家好,

对于我的一个项目,我需要打开一个新选项卡并在它们之间导航 相同的选项卡我需要知道如何按 CTRL+TCTRL+TAB 在 Selenium Webdriver 中使用 Java。

请让我知道我该怎么做。谢谢...!!!

我正在使用以下内容:

Firefox 版本: 48.0.2

Java 版本: 1.8

Selenium WebDriver 版本: 3.0.0

操作系统: Windows 10

我尝试了以下代码,但它似乎不起作用:

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Handling_Tabs {

    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver","C:\\Eclipse\\Drivers\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com/");
        System.out.println(driver.getTitle());
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL+"t");
        driver.get("http://www.bing.com/");
        System.out.println(driver.getTitle());
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL+"\t");
        System.out.println(driver.getTitle());      
    }
}

【问题讨论】:

    标签: java selenium selenium-webdriver webdriver


    【解决方案1】:

    您可以为 Ctrl+tCTRL+TAB 使用 Actions 类。我修改了您的示例,如下所示

    @Test
    public void OpeningNewTab(){
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com/");
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        System.out.println(driver.getTitle());
        Actions act = new Actions(driver);
        act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform();
        driver.get("http://www.bing.com/");
        System.out.println(driver.getTitle());
        act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform();
        driver.get("http://www.yahoo.com/");
        System.out.println(driver.getTitle());
        driver.close();
        driver.quit();
    
    }
    

    【讨论】:

    • 上面的代码对我不起作用。它对你有用吗?
    • 是的。我已经先测试了,然后把它放在这里。你得到的错误是什么?请粘贴在这里作为评论。您可以在步骤之间引入 Thread.sleep() 或 WebDriverWait 以引入一些等待时间。
    • 一个问题:你为什么使用 geckodriver.exe?这背后有什么具体原因吗?我使用了“selenium server 2.53”和默认的 firefox 浏览器。
    • 如果您使用 Selenium 3,那么要使用 Firefox 浏览器,您需要使用单独的驱动程序,在这种情况下,Firefox Gecko 驱动程序与我们用于 IE 和 chrome 浏览器的方式相同,它们将与 Firefox 浏览器交互。我正在使用 slenium 3.0.0 版和 Mozilla 48.0.2 版。
    【解决方案2】:

    您也可以使用 Robot 类,只需导入

    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    
    public class Keyboard {
    
        public static void main(String[] args) {
    
                try {
                        Robot robot = new Robot();
    
           // Simulate a mouse click
                        robot.mousePress(InputEvent.BUTTON1_MASK);
                        robot.mouseRelease(InputEvent.BUTTON1_MASK);
    
          // ctrl + T & ctrl TAB  
    
                    robot.keyPress(KeyEvent.VK_CONTROL);
                    robot.keyPress(KeyEvent.VK_T);
    
                    // CTRL+T is now pressed 
    
                    robot.keyRelease(KeyEvent.VK_T);
                    robot.keyRelease(KeyEvent.VK_CONTROL);
    
                } catch (AWTException e) {
                        e.printStackTrace();
                }
            }
    

    【讨论】:

    • @VishvambruthJT 稍等片刻,再次检查它的工作是否正常。
    • 我可以使用下面的代码打开新标签,但无法在新标签上打开 URL 如何将控件移动到新标签:尝试 { Robot robot = new Robot(); // 现在按下 CTRL+T robot.keyPress(KeyEvent.VK_CONTROL);机器人.keyPress(KeyEvent.VK_T); //释放按下 CTRL+T robot.keyRelease(KeyEvent.VK_T);机器人.keyRelease(KeyEvent.VK_CONTROL); }catch (AWTException e) { e.printStackTrace(); }driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get("bing.com/");
    • 不要使用机器人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 2017-07-03
    • 2010-10-23
    • 2015-12-14
    • 1970-01-01
    • 2013-03-06
    相关资源
    最近更新 更多