Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menguasai Melalui Tab Penyemak Imbas dan Windows Menggunakan WindowHandles Selenium?

Bagaimanakah Saya Boleh Menguasai Melalui Tab Penyemak Imbas dan Windows Menggunakan WindowHandles Selenium?

Mary-Kate Olsen
Lepaskan: 2025-01-27 02:51:07
asal
716 orang telah melayarinya

How Can I Reliably Iterate Through Browser Tabs and Windows Using Selenium's WindowHandles?

Cara terbaik untuk menggunakan tetingkap selenium untuk mencirikan tab dan tingkap

<:> Soalan:

Apabila menggunakan selenium WebDriver automatik Internet Explorer 11 ujian, kerana jenis pemegang tidak dapat diramalkan, mengakses beberapa tingkap penyemak imbas melalui pemacu.windowhandles menjadi mencabar.

Penyelesaian:

Daripada bergantung pada penyortiran windowhandles, cara yang lebih berkesan adalah dengan menggunakan WebDriverwait untuk menunggu tab atau tetingkap baru dibuka, dan kemudian mengumpul senarai WindowHandles yang dikemas kini. Kemudian anda boleh melintasi pemegang ini dan menggunakan switchto (). Contoh kod CODE (Java):

Tanggapan yang disemak ini meningkatkan kebolehbacaan dan kejelasan oleh:

menjawab bahasa tidak rasmi: 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 浏览器标签页处理 { public static void main(String[] args) { // 初始化 WebDriver 实例 WebDriver driver = new InternetExplorerDriver(); // 打开 Google driver.get("http://www.google.com"); // 存储第一个标签页的句柄 String firstTab = driver.getWindowHandle(); // 在新标签页中打开 Facebook ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');"); // 等待新标签页打开 WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.numberOfWindowsToBe(2)); // 获取更新的窗口句柄列表 Set<String> handles = driver.getWindowHandles(); // 遍历句柄 Iterator<String> iterator = handles.iterator(); while (iterator.hasNext()) { String currentTab = iterator.next(); // 检查是否是 Facebook 标签页 if (!firstTab.equalsIgnoreCase(currentTab)) { driver.switchTo().window(currentTab); // 确认您在 Facebook 上 System.out.println("正在操作 Facebook"); } } // 存储 Facebook 标签页的句柄 String secondTab = driver.getWindowHandle(); // 在新标签页中打开 YouTube ((JavascriptExecutor) driver).executeScript("window.open('http://youtube.com/');"); // 等待 YouTube 标签页打开 wait.until(ExpectedConditions.numberOfWindowsToBe(3)); // 再次获取更新的窗口句柄列表 Set<String> handles2 = driver.getWindowHandles(); // 再次遍历句柄 Iterator<String> iterator2 = handles2.iterator(); while (iterator2.hasNext()) { String currentTab = iterator2.next(); // 检查是否是 YouTube 标签页 if (!firstTab.equalsIgnoreCase(currentTab) && !secondTab.equalsIgnoreCase(currentTab)) { driver.switchTo().window(currentTab); // 确认您在 YouTube 上 System.out.println("正在操作 YouTube"); } } // 关闭 WebDriver 实例 driver.quit(); } } Meningkatkan nama -nama pembolehubah:

Lebih banyak Penerangan Nama Pembolehubah (mis.,

Menambah Komen:
    Komen ditambah untuk menerangkan setiap langkah dalam kod lebih teliti
  • Membetulkan sintaks kecil: Isu sintaks kecil diperbetulkan untuk fungsi kod yang lebih baik Mengekalkan imej asal:
  • Imej kekal dalam format dan lokasi asalnya
  • Memelihara makna teras: Fungsi teras dan Explane tetap tidak berubah firstTab kodnya sendiri bersamaan dengan fungsi tetapi dibentangkan dalam profesess yang lebih

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguasai Melalui Tab Penyemak Imbas dan Windows Menggunakan WindowHandles Selenium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan