【问题标题】:How to transfer control to new tab in Selenium WebDriver如何将控制权转移到 Selenium WebDriver 中的新选项卡
【发布时间】:2014-04-01 00:07:57
【问题描述】:

如何使用 WebDriver 将控制权从旧选项卡转移到新选项卡? 假设我在新标签中打开一个链接,然后我想在新打开的标签中执行一些操作。我该怎么做?

当我在新选项卡中打开链接时,该控件仍然存在于旧选项卡中。请提供解决方案。

例如:我在 gmail 中打开“创建帐户”链接到新标签,然后尝试填写表单中可用的文本字段,但是当我运行程序时,它总是说找不到元素

谢谢。

【问题讨论】:

  • 您使用哪种编程语言? Java、python、C# 还是什么?
  • 您需要使用 WebDriver 的 getWindowHandle() 和 getWindowHandles() 方法来处理窗口/选项卡。

标签: selenium selenium-webdriver


【解决方案1】:
new Actions(driver).sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL).sendKeys(driver.findElement(By.tagName("html")),Keys.NUMPAD2).build().perform();

会将控件传递给新选项卡(此脚本假定新选项卡是第二个选项卡)。

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_W);
robot.keyRelease(KeyEvent.VK_CONTROL);

这将关闭新标签。

new Actions(driver).sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL).sendKeys(driver.findElement(By.tagName("html")),Keys.NUMPAD1).build().perform();

将切换回原来的标签。

相关问题
Selenium 2: Open link in new tab and close tabs
switch tabs using Selenium WebDriver with Java

【讨论】:

  • 嗨,这是我的代码: public void test() throws Exception { WebDriver driver= new FirefoxDriver(); driver.get("http://www.gmail.com"); WebElement element=driver.findElement(By.linkText("创建账户"));动作oAction=新动作(驱动程序); oAction.moveToElement(element); oAction.contextClick(element).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();线程.sleep(10000); driver.findElement(By.id("FirstName")).sendKeys("gaurav"); driver.findElement(By.id("LastName")).sendKeys("saini"); } 我在新标签中打开了“创建帐户”并想填写表格
  • 但是控件还在上一个标签中,它总是说找不到元素,请帮助解决这个问题。
【解决方案2】:
//declare selectLinkOpeninNewTab above the main method 
static String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);

// to open your seession in new tab
driver.findElement(By.id("")).sendKeys(selectLinkOpeninNewTab);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

// to perform actions
driver.switchTo().activeElement().sendKeys(Keys.CONTROL,Keys.NUMPAD2);   

// for example thease are your actions
driver.findElement(By.id("")).click();
driver.findElement(By.id("")).clicl();

// to close new tab and back to current tab
driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL+"w");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多