51Testing软件测试论坛

标题: Selenium 4:功能升级与应用实例全解析 [打印本页]

作者: lsekfe    时间: 5 天前
标题: Selenium 4:功能升级与应用实例全解析
Selenium 是一款广泛应用于 Web 应用程序自动化测试的工具套件。随着技术的不断发展,Selenium 4 的推出带来了诸多令人期待的新特性,这些特性旨在提高自动化测试的效率、灵活性和可维护性,使测试人员能够更好地应对复杂多变的 Web 应用测试场景。
二、Selenium 4 的新特性(一)相对定位器
在上述代码中,首先通过By.id找到参考按钮,然后使用RelativeLocator.with(By.tagName("button")).below(referenceButton)来定位位于参考按钮下方的按钮。这种相对定位的方式在页面布局发生一定变化时,只要元素之间的相对位置关系不变,测试脚本仍然能够正常工作,提高了测试脚本的稳定性。(二)全新的 Selenium Manager
  1. <font face="微软雅黑" size="3">import org.openqa.selenium.WebDriver;
  2. import org.openqa.selenium.chrome.ChromeDriver;

  3. public class SeleniumManagerExample {
  4.     public static void main(String[] args) {
  5.         // 不再需要设置 webdriver.chrome.driver 属性
  6.         WebDriver driver = new ChromeDriver();

  7.         // 打开网页等操作
  8.         driver.get("http://example.com");

  9.         // 其他测试操作

  10.         // 关闭浏览器
  11.         driver.close();
  12.     }
  13. }</font>
复制代码

在这个示例中,首先点击链接弹出新窗口,然后通过getWindowHandles获取所有窗口句柄,找到新窗口句柄并切换到新窗口,在新窗口中获取元素文本后关闭新窗口,最后切换回主窗口并关闭主窗口。这一系列操作展示了 Selenium 4 改进后的窗口管理功能在处理多窗口场景中的应用。
(四)更灵活的元素等待

  1. <font face="微软雅黑" size="3">import org.openqa.selenium.By;
  2. import org.openqa.selenium.WebDriver;
  3. import org.openqa.selenium.WebElement;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import org.openqa.selenium.support.ui.ExpectedConditions;
  6. import org.openqa.selenium.support.ui.WebDriverWait;

  7. public class ElementWaitExample {
  8.     public static void main(String[] args) {
  9.         System.setProperty("webdriver.chrome.driver", "path/to/chrome/driver");
  10.         WebDriver driver = new ChromeDriver();

  11.         // 打开网页
  12.         driver.get("http://example.com");

  13.         // 找到加载动画元素
  14.         WebElement loadingElement = driver.findElement(By.id("loadingAnimation"));

  15.         // 创建 WebDriverWait 对象,设置超时时间为 10 秒,轮询间隔为 500 毫秒
  16.         WebDriverWait wait = new WebDriverWait(driver, 10, 500);

  17.         // 等待加载动画元素消失
  18.         wait.until(ExpectedConditions.invisibilityOf(loadingElement));

  19.         // 进行后续操作,如查找其他元素等

  20.         // 关闭浏览器
  21.         driver.close();
  22.     }
  23. }</font>
复制代码

在上述代码中,通过WebDriverWait和ExpectedConditions.invisibilityOf方法,等待指定的加载动画元素消失后再进行后续操作,确保测试操作在页面稳定状态下进行。(五)对 Shadow DOM 的支持
  1. <font face="微软雅黑" size="3">import org.openqa.selenium.By;
  2. import org.openqa.selenium.WebDriver;
  3. import org.openqa.selenium.WebElement;
  4. import org.openqa.selenium.chrome.ChromeDriver;

  5. public class ShadowDOMExample {
  6.     public static void main(String[] args) {
  7.         System.setProperty("webdriver.chrome.driver", "path/to/chrome/driver");
  8.         WebDriver driver = new ChromeDriver();

  9.         // 打开网页
  10.         driver.get("http://example.com");

  11.         // 找到包含 Shadow DOM 的元素
  12.         WebElement shadowHost = driver.findElement(By.id("shadowHostElement"));

  13.         // 获取 Shadow DOM 的根元素
  14.         WebElement shadowRoot = shadowHost.getShadowRoot();

  15.         // 在 Shadow DOM 内部找到按钮元素并点击
  16.         WebElement buttonInsideShadowDOM = shadowRoot.findElement(By.cssSelector("button"));
  17.         buttonInsideShadowDOM.click();

  18.         // 关闭浏览器
  19.         driver.close();
  20.     }
  21. }</font>
复制代码
Selenium 4 的新特性为自动化测试带来了诸多便利和改进。相对定位器使元素定位更加灵活和稳定,全新的 Selenium Manager 简化了测试环境的搭建,改进的窗口管理方便了多窗口场景的处理,更灵活的元素等待提高了测试的准确性和效率,对 Shadow DOM 的支持则拓展了 Selenium 的应用范围。测试人员应深入学习和掌握这些新特性,将其应用到实际的自动化测试项目中,以提升测试质量和效率,更好地适应现代 Web 应用程序的测试需求。随着技术的不断发展,相信 Selenium 还会继续演进,为自动化测试领域持续注入新的活力。








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2