Maison >développement back-end >C++ >Comment puis-je parcourir de manière fiable les onglets du navigateur et les fenêtres à l'aide de Windowles de Selenium?
Lorsque vous utilisez des tests Selenium WebDriver Internet Explorer 11, car le type de poignée est imprévisible, accédant à plusieurs fenêtres de navigateur via le pilote. WindowHandles devient difficile.
Solution:
Au lieu de compter sur le tri de Handshandles, un moyen plus efficace consiste à utiliser WebDriverWait pour attendre que le nouvel onglet ou la nouvelle fenêtre s'ouvre, puis de collecter la liste des WindowsHandles mis à jour. Ensuite, vous pouvez traverser ces poignées et utiliser Switchtto ().
Exemple de code (java):
Cette réponse révisée améliore la lisibilité et la clarté de:
<code class="language-java">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(); } }</code>
Les phrases comme "travailler sur Facebook" sont remplacées par des alternatives plus formelles.
firstTab
L'image reste dans son format et son emplacement d'origine.
first_tab
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!