จะเปิดแท็บใหม่โดยใช้ Selenium WebDriver ได้อย่างไร?


114

จะเปิดแท็บใหม่ในเบราว์เซอร์ Firefox ที่มีอยู่โดยใช้ Selenium WebDriver (aka Selenium 2) ได้อย่างไร


คุณใช้ภาษาโปรแกรมอะไร
alecxe

2
ฉันใช้ java ฉันมีโซลูชันหนึ่ง "m_Driver.findElement (By.cssSelector (" body ")) sendKeys (Keys.CONTROL +" t ");" และมันทำงานได้ดีโดยสิ้นเชิง
Bhakti Shah

จากนั้นคุณสามารถควบคุมแท็บใหม่ได้หรือไม่? ซีลีเนียมไม่รองรับแท็บใหม่ (พยายามเปิดหน้าต่างใหม่แทน) ดูคำตอบของฉันstackoverflow.com/questions/14550360/...และstackoverflow.com/questions/17225911/... คุณพยายามบรรลุอะไรกันแน่?
Petr Janeček

ฉันต้องการคัดลอกข้อความบางส่วนจากนั้นเปิดแท็บใหม่แล้ววางข้อความเดียวกันในแท็บใหม่ ฉันไม่ได้พยายามควบคุมแท็บใหม่ แต่ใช้งานได้ดีกับสิ่งที่ฉันต้องการบรรลุ
Bhakti Shah

ฉันทำสิ่งเดียวกันโดยใช้ GetText () ขององค์ประกอบนั้นแล้วทำ Driver.get (ข้อความ)
Bhakti Shah

คำตอบ:


53

โค้ดด้านล่างนี้จะเปิดลิงค์ในแท็บใหม่

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); 
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);

โค้ดด้านล่างจะเปิดแท็บใหม่ที่ว่างเปล่า

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,"t");
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);

7
ใช้ Keys.COMMAND แทน Keys.CONTROL ถ้าคุณใช้ mac
nanospeck

2
โซลูชันนี้ดูเหมือนจะน้อยกว่าที่เหมาะสมเนื่องจากขึ้นอยู่กับทางลัดเฉพาะ OS (และอาจเป็นทางลัดเฉพาะเบราว์เซอร์) ... อย่างน้อยถ้าคุณใช้บางอย่างเช่น JS window.open()คุณสามารถคาดหวังว่ามันจะทำงานบนแพลตฟอร์ม / เบราว์เซอร์จำนวนมาก
mkasberg

86

สำหรับใครก็ตามที่กำลังมองหาคำตอบในการผูก Ruby / Python / C # (ซีลีเนียม 2.33.0)

หมายเหตุว่าคีย์ที่เกิดขึ้นจริงที่จะส่งขึ้นอยู่กับระบบปฏิบัติการของคุณตัวอย่างเช่นการใช้ Mac แทนCOMMAND + tCONTROL + t

ทับทิม

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.get('http://stackoverflow.com/')

body = driver.find_element(:tag_name => 'body')
body.send_keys(:control, 't')

driver.quit

Python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

body = driver.find_element_by_tag_name("body")
body.send_keys(Keys.CONTROL + 't')

driver.close()

ค#

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace StackOverflowTests {

    class OpenNewTab {

        static void Main(string[] args) {

            IWebDriver driver = new FirefoxDriver();
            driver.Navigate().GoToUrl("http://stackoverflow.com/");

            IWebElement body = driver.FindElement(By.TagName("body"));
            body.SendKeys(Keys.Control + 't');

            driver.Quit();
        }
    }
}

3
คุณจะกลับไปที่แท็บก่อนหน้าได้อย่างไร
lurscher

11
WebDriver สามารถจัดการได้มากกว่าหนึ่งแท็บโดยจะถือว่าเป็นหน้าต่างแยกต่างหาก ดังนั้นคุณจะต้องdriver.switchTo().window(windowName);เข้าถึงแท็บหรือหน้าต่างใดก็ได้ เห็นได้ชัดว่าคุณต้องติดตามชื่อหน้าต่างตามปกติเพื่อให้สามารถสลับไปมาได้
Mark Rowlands

1
คุณช่วยอธิบายได้ไหมว่าทำไมคุณถึงดึงองค์ประกอบและส่ง Ctrl-t ไปยังองค์ประกอบนั้น มันไม่สมเหตุสมผล ... คุณไม่สามารถ "Ctrl + t บนองค์ประกอบเว็บ" ได้หรือไม่? ทำไมไม่เรียกใช้ Actions ใหม่ (WebDriver ).SendKeys (Keys.Control + "w") .Perform (); ใครช่วยอธิบายหน่อยได้ไหม
Brondahl

1
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันได้ลองกด ctrl + t หลายวิธีแล้ว แต่ไม่ประสบความสำเร็จในการเปิดแท็บใหม่
Thayne

4
@Thayne ข้อบกพร่องของ ChromeDriverป้องกันไม่ให้ CTRL + T ทำงาน คุณสามารถใช้ CTRL + LMB เป็นวิธีแก้ปัญหาได้ ดูcode.google.com/p/chromedriver/issues/detail?id=903#c2สำหรับโค้ดตัวอย่าง
Gili

34

ทำไมไม่ทำเช่นนี้

driver.ExecuteScript("window.open('your url','_blank');");

ตัวบล็อกป๊อปอัปส่วนใหญ่จะบล็อกความพยายามนี้
Bert Lamb

1
น่าจะปลอดภัยสำหรับการทดสอบว่าคุณควบคุมการตั้งค่าเบราว์เซอร์ของคุณได้
ที่ไหน

1
อาจจะทำงานได้ดี chromedriver ดูเหมือนจะปิดการใช้งานส่วนขยายทั้งหมด (เช่น adblock)
Josh O'Bryan

4
วิธีส่งคีย์ใช้งานไม่ได้อีกต่อไปหลังจากอัปเดตเป็น Chrome 49.0.2623.75m และวิธีนี้ใช้ได้กับ Chrome เวอร์ชันนั้น
Steven

6
หากคุณต้องการเปิดหน้าว่างในแท็บคุณสามารถทำได้driver.ExecuteScript("window.open('about:blank','_blank');");
สตีเวน

12

ในการเปิดแท็บใหม่โดยใช้ JavascriptExecutor

((JavascriptExecutor) driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));

จะควบคุมบนแท็บตามดัชนี:

driver.switchTo().window(tabs.get(1));

การควบคุมไดรเวอร์บนแท็บหลัก:

driver.switchTo().window(tabs.get(0));

วิธีการเปิดตัว 3 URL? driver.switchTo().window(tabs.get(1)); driver.get("https://www.stackoverflow.com"); Thread.sleep(2000); driver.switchTo().window(tabs.get(2)); driver.get("https://www.flipkart.com"); Thread.sleep(2000); driver.close(); driver.switchTo().window(tabs.get(1)); Thread.sleep(2000); driver.close(); driver.switchTo().window(tabs.get(0));ฉันได้ลองสิ่งนี้แล้ว แต่ได้รับอาร์เรย์ออกจากข้อยกเว้นที่ จำกัด หากคุณทราบวิธีแก้ปัญหาใด ๆ โปรดแจ้งให้เราทราบ
cruisepandey

มันทำงานในทำนองเดียวกันสำหรับแท็บที่ 3 ด้วย ฉันขอทราบได้ไหมว่าข้อยกเว้นเกิดขึ้นที่ใด (เมื่อปิดไดรเวอร์)
Ishita Shah

ไม่ในบรรทัดdriver.switchTo().window(tabs.get(2));นี้มันใช้งานได้ดี((JavascriptExecutor) driver).executeScript("window.open('https://www.stackoverflow.com','_blank');"); Thread.sleep(3000); ((JavascriptExecutor) driver).executeScript("window.open('https://www.flipkart.com','_blank');");แต่ฉันจะไม่มีการควบคุมใด ๆ เพื่อเปลี่ยนเป็น windows
cruisepandey


8

คุณสามารถใช้โค้ดต่อไปนี้โดยใช้ Java กับ Selenium WebDriver:

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

โดยใช้ JavaScript:

WebDriver driver = new FirefoxDriver();//FF or any other Driver
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.open()");

หลังจากเปิดแท็บใหม่จำเป็นต้องเปลี่ยนไปใช้แท็บนั้น:

ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));

การดำเนินการด้วยตนเอง Ctrl + T เพื่อเปิดแท็บใหม่ได้ถูกนำมาใช้ที่นี่
Ripon Al Wasim

@ จันทราเชคาร์: คุณช่วยลองใช้รหัส JS ของฉันด้านบนได้ไหม
Ripon Al Wasim

@ Shivam: ขอบคุณมาก เป็นเรื่องดีที่จะได้ยินเมื่อรหัสทำงาน
Ripon Al Wasim

5

ลองใช้กับเบราว์เซอร์ FireFox

/*  Open new tab in browser */
public void openNewTab()
{
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
    ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
    driver.switchTo().window(tabs.get(0));
}

3

โค้ดด้านล่างนี้จะเปิดลิงค์ในหน้าต่างใหม่

String selectAll = Keys.chord(Keys.SHIFT,Keys.RETURN);
driver.findElement(By.linkText("linkname")).sendKeys(selectAll);

1
พิมพ์ object 'Keys' ไม่มีแอตทริบิวต์ 'chord'
Robino

@ โรบิโน. ฉันเห็นมันในคลาส Keys (org.openqa.Selenium)
MrBCut

3

คำตอบเกือบทั้งหมดที่นี่ล้าสมัย

ขณะนี้ WebDriver รองรับการเปิดแท็บ:

browser = Selenium::WebDriver.for :chrome
new_tab = browser.manage.new_window

จะเปิดแท็บใหม่ การเปิดหน้าต่างกลายเป็นกรณีที่ไม่ได้มาตรฐาน:

browser.manage.new_window(:window)

แท็บหรือหน้าต่างจะไม่ถูกโฟกัสโดยอัตโนมัติ ในการเปลี่ยนไปใช้:

browser.switch_to.window new_tab

2

หากต้องการเปิดแท็บใหม่ในเบราว์เซอร์ Chrome ที่มีอยู่โดยใช้ Selenium WebDriver คุณสามารถใช้รหัสนี้:

driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");        
string newTabInstance = driver.WindowHandles[driver.WindowHandles.Count-1].ToString();
driver.SwitchTo().Window(newTabInstance);
driver.Navigate().GoToUrl(url);

ใช่วิธีนี้ใช้งานได้ดีเปิด url ใหม่ในแท็บเดียวกันของ url ที่มีอยู่เหมาะสำหรับการทดสอบลิงก์จำนวนมากเนื่องจากไม่ได้ใช้ทรัพยากรมากนัก
John Peters

2

ฉันมีปัญหาในการเปิดแท็บใหม่ใน Chrome มาระยะหนึ่งแล้ว แม้driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");ไม่ได้ผลสำหรับฉัน

ฉันพบว่าซีลีเนียมให้ความสำคัญกับไดรเวอร์ไม่เพียงพอ Windows ก็ต้องมีหน้าต่างอยู่ด้านหน้าด้วย

วิธีแก้ปัญหาของฉันคือเรียกใช้การแจ้งเตือนบน chrome ซึ่งจะนำหน้าต่างมาด้านหน้าจากนั้นดำเนินการคำสั่ง รหัสตัวอย่าง:

((JavascriptExecutor)driver).executeScript("alert('Test')");
driver.switchTo().alert().accept();
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");

1

ฉันใช้ Selenium 2.52.0 ใน Java และ Firefox 44.0.2 น่าเสียดายที่วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน ปัญหาคือถ้าฉันโทรหา driver.getWindowHandles () ฉันจะได้รับ 1 หมายเลขอ้างอิงเดียวเสมอ อย่างไรก็ตามสิ่งนี้สมเหตุสมผลสำหรับฉันเนื่องจาก Firefox เป็นกระบวนการเดียวและแต่ละแท็บไม่ใช่กระบวนการแยกกัน แต่บางทีฉันอาจจะคิดผิด อย่างไรก็ตามฉันพยายามเขียนวิธีแก้ปัญหาของตัวเอง:

        // open a new tab
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");

        //url to open in a new tab
        String urlToOpen = "https://url_to_open_in_a_new_tab";

        Iterator<String> windowIterator = driver.getWindowHandles()
                .iterator();
        //I always get handlesSize == 1, regardless how many tabs I have
        int handlesSize = driver.getWindowHandles().size();

        //I had to grab the original handle
        String originalHandle = driver.getWindowHandle();

        driver.navigate().to(urlToOpen);

        Actions action = new Actions(driver);
        // close the newly opened tab
        action.keyDown(Keys.CONTROL).sendKeys("w").perform();
        // switch back to original
        action.keyDown(Keys.CONTROL).sendKeys("1").perform();

        //and switch back to the original handle. I am not sure why, but
        //it just did not work without this, like it has lost the focus
        driver.switchTo().window(originalHandle);

ฉันใช้ชุดค่าผสม Ctrl + t เพื่อเปิดแท็บใหม่ Ctrl + w เพื่อปิดและเพื่อเปลี่ยนกลับไปใช้แท็บเดิมฉันใช้ Ctrl + 1 (แท็บแรก) ฉันทราบว่าโซลูชันของฉันไม่สมบูรณ์แบบหรือดีและฉันต้องการเปลี่ยนด้วยสวิตช์คนขับในการโทร แต่อย่างที่ฉันเขียนมันเป็นไปไม่ได้เพราะฉันมีที่จับเพียงอันเดียว บางทีนี่อาจเป็นประโยชน์กับคนที่มีสถานการณ์เดียวกัน



1

วิธีเปิดแท็บใหม่โดยใช้ Selenium WebDriver พร้อม Java สำหรับ Chrome

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.navigate().to("https://google.com");     
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);

โค้ดด้านบนจะปิดการใช้งานส่วนขยายแรกและการใช้แท็บใหม่ของคลาสหุ่นยนต์จะเปิดขึ้น


1

โค้ดบรรทัดนี้จะเปิดแท็บเบราว์เซอร์ใหม่โดยใช้ selenium webdriver

((JavascriptExecutor)getDriver()).executeScript("window.open()");

เมื่อฉันรันโค้ดด้านบนใน chrome มันเปิดแท็บใหม่ อย่างไรก็ตามใน firefox มีการเปิดหน้าต่างใหม่ ในทั้งสองกรณีตัวจัดการหน้าต่างจะแตกต่างกันสำหรับตัวจัดการที่เพิ่งเปิดใหม่ ดังนั้นฉันคิดว่าแท็บจะเหมือนกับหน้าต่างไม่มากก็น้อย แน่นอนว่าหน้าต่างที่ไม่ระบุตัวตนนั้นแตกต่างจากแท็บของหน้าต่างทั่วไปอย่างแน่นอน
MamathaMacherla

1

* Java

ฉันแนะนำให้ใช้JavascriptExecutor:

  • เปิดหน้าต่างใหม่ที่ว่างเปล่า:
((JavascriptExecutor) driver).executeScript("window.open()");
  • เปิดหน้าต่างใหม่พร้อม URL เฉพาะ:
((JavascriptExecutor) driver).executeScript("window.open('https://google.com')");

กำลังนำเข้า:

import org.openqa.selenium.JavascriptExecutor;

0

ตัวอย่างเดียวกันสำหรับ nodejs:

var webdriver = require('selenium-webdriver');
...
driver = new webdriver.Builder().
                    withCapabilities(capabilities).
                    build();
...

driver.findElement(webdriver.By.tagName("body")).sendKeys(webdriver.Key.COMMAND + "t");

0

วิธีเปิดใหม่ แต่ที่สำคัญกว่านั้นคุณจะทำสิ่งต่างๆในแท็บใหม่นั้นได้อย่างไร? Webdriver ไม่ได้เพิ่ม WindowHandle ใหม่สำหรับแต่ละแท็บและควบคุมได้เฉพาะแท็บแรกเท่านั้น ดังนั้นหลังจากเลือกแท็บใหม่ (Control + Tab Number) set .DefaultContent () บนไดรเวอร์เพื่อกำหนดแท็บที่มองเห็นได้เป็นแท็บที่คุณกำลังจะดำเนินการ

Visual Basic

Dim driver = New WebDriver("Firefox", BaseUrl)

' Open new tab - send Control T
Dim body As IWebElement = driver.FindElement(By.TagName("body"))
body.SendKeys(Keys.Control + "t")

' Go to a URL in that tab
driver.GoToUrl("YourURL")


' Assuming you have m tabs open, go to tab n by sending Control + n
body.SendKeys(Keys.Control + n.ToString())

' Now set the visible tab as the drivers default content.
driver.SwitchTo().DefaultContent()

0

เพื่อเปิดแท็บใหม่ในเบราว์เซอร์ Firefox ที่มีอยู่โดยใช้ Selenium WebDriver

FirefoxDriver driver = new FirefoxDriver();
driver.findElement(By.tagName("body")).sendKeys(Keys.CONTROL,"t"); 

0
 Actions at=new Actions(wd);
 at.moveToElement(we);
 at.contextClick(we).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();

ในอนาคตให้ใส่ข้อความอธิบายพร้อมกับข้อมูลโค้ดเพื่อให้โพสต์ของคุณเข้าใจง่ายขึ้น
Tyler Jandreau

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

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());

driver.switchTo().window(tabs.get(0));

0

ตรวจสอบตัวอย่างทั้งหมดนี้เพื่อทำความเข้าใจวิธีการเปิดหลายแท็บและสลับไปมาระหว่างแท็บและในตอนท้ายให้ปิดแท็บทั้งหมด

public class Tabs {

 WebDriver driver; 

 Robot rb;


 @BeforeTest
 public void setup() throws Exception {
  System.setProperty("webdriver.chrome.driver", "C:\\Users\\Anuja.AnujaPC\\Downloads\\chromedriver_win32\\chromedriver.exe");
  WebDriver driver=new ChromeDriver();
  driver.manage().window().maximize();
  driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
  driver.get("http://qaautomated.com");
 }

 @Test
 public void openTab() {
  //Open tab 2 using CTRL + t keys.
  driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");


 //Open URL In 2nd tab.
  driver.get("http://www.qaautomated.com/p/contact.html");

  //Call switchToTab() method to switch to 1st tab
  switchToTab(); 


  //Call switchToTab() method to switch to 2nd tab.
  switchToTab();


 } 

 public void switchToTab() {
  //Switching between tabs using CTRL + tab keys.
  driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");
  //Switch to current selected tab's content.
  driver.switchTo().defaultContent();  
 } 



@AfterTest
 public void closeTabs() throws AWTException {
  //Used Robot class to perform ALT + SPACE + 'c' keypress event.
  rb =new Robot();
  rb.keyPress(KeyEvent.VK_ALT);
  rb.keyPress(KeyEvent.VK_SPACE);
  rb.keyPress(KeyEvent.VK_C);
 } }

ตัวอย่างนี้ได้รับจากหน้าเว็บนี้


0

เนื่องจากข้อผิดพลาดในhttps://bugs.chromium.org/p/chromedriver/issues/detail?id=1465แม้ว่า webdriver.switch ในการสลับแท็บจริงโฟกัสจะถูกทิ้งไว้ที่แท็บแรก คุณสามารถยืนยันสิ่งนี้ได้โดยทำ driver.get หลัง switchWindow และดูว่าแท็บที่สองไปที่ URL ใหม่ไม่ใช่แท็บเดิม

วิธีแก้ปัญหาตอนนี้คือสิ่งที่ @ yardening2 แนะนำ ใช้ js เพื่อเปิดการแจ้งเตือนจากนั้นใช้ webdriver เพื่อยอมรับ


0

รหัสนี้ใช้ได้กับฉัน (ซีลีเนียม 3.8.1, chromedriver = 2.34.522940, chrome = 63.0):

public void openNewTabInChrome() {

    driver.get("http://www.google.com");

    WebElement element = driver.findElement(By.linkText("Gmail"));
    Actions actionOpenLinkInNewTab = new Actions(driver);
    actionOpenLinkInNewTab.moveToElement(element)
            .keyDown(Keys.CONTROL) // MacOS: Keys.COMMAND
            .keyDown(Keys.SHIFT).click(element)
            .keyUp(Keys.CONTROL).keyUp(Keys.SHIFT).perform();


    ArrayList<String> tabs = new ArrayList(driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1));
    driver.get("http://www.yahoo.com");
    //driver.close();
}

0

คำถาม : จะเปิดแท็บใหม่โดยใช้ Selenium WebDriver กับ Java ได้อย่างไร?

ตอบ : หลังจากคลิกที่ลิงค์ใดก็ได้ให้เปิดแท็บใหม่

หากเราต้องการจัดการแท็บที่เพิ่งเปิดใหม่เราจำเป็นต้องจัดการแท็บโดยใช้คำสั่ง. switchTo (). window ()

สลับไปที่แท็บเฉพาะจากนั้นดำเนินการและเปลี่ยนกลับไปที่แท็บหลัก

package test;

import java.util.ArrayList;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

public class Tab_Handle {

    public static void main(String[] args) {

        System.setProperty("webdriver.gecko.driver", "geckodriver_path");

        WebDriver driver = new FirefoxDriver();

        driver.get("http://www.google.com");

        // Store all currently open tabs in Available_tabs
        ArrayList<String> Available_tabs = new ArrayList<String>(driver.getWindowHandles());

        // Click on link to open in new tab
        driver.findElement(By.id("Url_Link")).click();

        // Switch newly open Tab
        driver.switchTo().window(Available_tabs.get(1));

        // Perform some operation on Newly open tab
        // Close newly open tab after performing some operations.
        driver.close();

        // Switch to old(Parent) tab.
        driver.switchTo().window(Available_tabs.get(0));

    }

}

0

ซีลีเนียมไม่รองรับการเปิดแท็บใหม่ แต่รองรับการเปิดหน้าต่างใหม่เท่านั้น สำหรับวัตถุประสงค์ทั้งหมดหน้าต่างใหม่จะทำงานได้เทียบเท่ากับแท็บใหม่

มีแฮ็กต่างๆที่ต้องแก้ไขปัญหา แต่จะทำให้คุณมีปัญหาอื่น ๆ ในระยะยาว


0

หากคุณต้องการเปิดแท็บใหม่คุณสามารถใช้สิ่งนี้ได้

 ((JavascriptExecutor) getDriver()).executeScript("window.open()");

หากคุณต้องการเปิดลิงก์จากแท็บใหม่คุณสามารถใช้สิ่งนี้ได้

ด้วย JavascriptExecutor:

 public void openFromNewTab(WebElement element){
            ((JavascriptExecutor)getDriver()).executeScript("window.open('"+element.getAttribute("href")+"','_blank');");
        }

ด้วยการดำเนินการ:

 WebElement element = driver.findElement(By.xpath("your_xpath"));
 Actions actions = new Actions(driver);
        actions.keyDown(Keys.LEFT_CONTROL)
                .click(element)
                .keyUp(Keys.LEFT_CONTROL)
                .build()
                .perform();


-1

การจัดการหน้าต่างเบราว์เซอร์โดยใช้ Selenium Webdriver:

String winHandleBefore = driver.getWindowHandle();

for(String winHandle : driver.getWindowHandles())  // Switch to new opened window
{
    driver.switchTo().window(winHandle);
}

driver.switchTo().window(winHandleBefore);   // move to previously opened window

ไม่สามารถตอบคำถามได้ คุณตอบเกี่ยวกับการเปลี่ยนไปใช้หน้าต่างที่มีอยู่แล้ว OP ถามว่าจะเปิดหน้าต่างใหม่ได้อย่างไร
Thomas Hirsch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.