Cara terbaik untuk menggunakan tetingkap selenium untuk mencirikan tab dan tingkap
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:
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();
}
}
Lebih banyak Penerangan Nama Pembolehubah (mis.,
firstTab
kodnya sendiri bersamaan dengan fungsi tetapi dibentangkan dalam profesess yang lebihAtas 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!