Cara terbaik untuk menjejak dan mengulangi tab dan tetingkap menggunakan WindowHandles menggunakan Selenium
P粉744691205
P粉744691205 2023-11-04 18:03:14
0
1
556

Kami sedang bekerjasama dengan pemacu web Selenium untuk ujian UI untuk Internet Explorer 11. Dalam aplikasi web ujian, beberapa skrin muncul. Dalam beberapa ujian, kami mendapat tiga tetingkap penyemak imbas dan oleh itu tiga Driver.WindowHandles. Untuk bertukar daripada satu WindowHandle ke yang lain, kami menjangkakan Driver.WindowHandle akan diisih dengan tetingkap tertua dahulu dan tetingkap terbaharu terakhir. Tetapi itu tidak berlaku: ia benar-benar rawak!

Oleh kerana windowhandle ialah GUID, kami akhirnya mencipta kamus dengan WindowHandle GUID sebagai kunci dan nilai sebagai nilai untuk jenis halaman yang dimuatkan dalam tetingkap penyemak imbas. Tetapi ini juga akan menyebabkan kamus dikekalkan apabila tetingkap ditutup.

Nampaknya banyak kerja untuk perkara yang begitu mudah. Adakah terdapat penyelesaian yang lebih baik?

P粉744691205
P粉744691205

membalas semua (1)
P粉986937457

Anda betul sekali:

Dalam perbincangan, Simon dengan jelas menyebut:

Jadi kami akan naikkanWebDriverWait,然后每次打开新选项卡/窗口时收集窗口句柄,最后迭代窗口句柄和switchTo().window(newly_opened)mengikut keperluan:

Jawa:

package demo; import java.util.Iterator; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class NEW_TAB_Handling { public static void main(String[] args) { System.setProperty("webdriver.ie.driver", "C:\Utility\BrowserDrivers\IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(); driver.get("http://www.google.com"); String first_tab = driver.getWindowHandle(); System.out.println("Working on Google"); ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');"); WebDriverWait wait = new WebDriverWait(driver,5); wait.until(ExpectedConditions.numberOfWindowsToBe(2)); Set s1 = driver.getWindowHandles(); Iterator i1 = s1.iterator(); while(i1.hasNext()) { String next_tab = i1.next(); if (!first_tab.equalsIgnoreCase(next_tab)) { driver.switchTo().window(next_tab); System.out.println("Working on Facebook"); } } String second_tab = driver.getWindowHandle(); ((JavascriptExecutor) driver).executeScript("window.open('http://youtube.com/');"); wait.until(ExpectedConditions.numberOfWindowsToBe(3)); Set s2 = driver.getWindowHandles(); Iterator i2 = s2.iterator(); while(i2.hasNext()) { String next_tab = i2.next(); if (!first_tab.equalsIgnoreCase(next_tab) && !second_tab.equalsIgnoreCase(next_tab)) { driver.switchTo().window(next_tab); System.out.println("Working on Youtube"); } } driver.quit(); System.out.println("Quit the WebDriver instance"); } }

Keluaran konsol:

Working on Google Working on Facebook Working on Youtube Quit the WebDriver instance

Lain-lain

Anda boleh mencari perbincangan berasaskandiBuka Web Selenium + Python dalam tab baharup>

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!