自动化测试selenium(五)

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;

import java.util.List;

public class Main {
    public static void main(String[] args) {
        Test02();
    }

    private static void Test02() {
        // 设置系统属性,指定chromedriver的路径(如果需要)
        // System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

        WebDriver webDriver = new ChromeDriver();
        try {
            // 打开百度首页
            webDriver.get("https://www.baidu.com");
            // 找到搜索输入框
            WebElement searchInput = webDriver.findElement(By.id("kw"));
            // 向输入框中输入“软件测试”
            searchInput.sendKeys("软件测试");
            // 找到并点击“百度一下”
            WebElement baiduButton = webDriver.findElement(By.id("su"));
            baiduButton.click();

            // 使用WebDriverWait等待搜索结果出现
            WebDriverWait wait = new WebDriverWait(webDriver, 10);
            // 注意:这里的选择器可能需要根据实际页面结构进行调整
            // 假设搜索结果中的链接被包裹在<h3 class="t"><a>标签中
            List<WebElement> searchResults = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("h3.t a")));

            // 遍历搜索结果,检查是否包含“软件测试”
            boolean found = false;
            for (WebElement result : searchResults) {
                if (result.getText().contains("软件测试")) {
                    System.out.println("测试通过,找到相关搜索结果");
                    found = true;
                    break; // 找到后退出循环
                }
            }
            if (!found) {
                System.out.println("测试不通过,未找到相关搜索结果");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭浏览器
            if (webDriver != null) {
                webDriver.quit();
            }
        }
    }
}

当然可以,以下是对您提供的代码的详细讲解:

引入依赖

首先,代码通过import语句引入了Selenium WebDriver库中的相关类和接口,这些类和接口是自动化测试脚本与浏览器交互的基础。

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import java.util.List;

 

主类和主方法

Main类包含了一个main方法,这是Java程序的入口点。main方法调用了Test02方法,执行测试逻辑。

测试方法 Test02

初始化WebDriver
  • 实例化ChromeDriver对象作为WebDriver的实例,用于控制Chrome浏览器。这里假设ChromeDriver的路径已经配置在系统的环境变量中,或者通过System.setProperty显式设置。
打开网页
  • 使用webDriver.get("https://www.baidu.com")打开百度首页。
定位并操作页面元素
  • 使用findElement(By.id("kw"))定位到搜索输入框,并发送“软件测试”作为搜索关键词。
  • 使用findElement(By.id("su"))定位到“百度一下”按钮,并执行点击操作。
等待搜索结果
  • 实例化WebDriverWait对象,并设置等待时间为10秒。这是为了确保在搜索结果出现之前,脚本会暂停执行,等待页面加载完成。
  • 使用ExpectedConditions.visibilityOfAllElementsLocatedBy方法结合CSS选择器h3.t a来等待所有搜索结果链接变为可见状态。这假设搜索结果中的每个链接都被<h3 class="t"><a>标签包裹。
遍历并检查搜索结果
  • 遍历搜索结果列表,检查每个链接的文本是否包含“软件测试”。
  • 如果找到匹配的搜索结果,则打印“测试通过,找到相关搜索结果”,并将found变量设置为true,然后退出循环。
  • 如果遍历完所有结果都没有找到匹配的文本,则打印“测试不通过,未找到相关搜索结果”。
异常处理和资源清理
  • 使用try-catch块捕获并打印可能发生的任何异常,以便调试。
  • finally块中,检查webDriver对象是否不为null,并调用quit方法关闭浏览器,释放资源。

注意事项

  • 确保ChromeDriver与您的Chrome浏览器版本兼容。
  • 如果ChromeDriver的路径没有配置在系统的环境变量中,您需要使用System.setProperty显式设置。
  • CSS选择器h3.t a可能需要根据实际页面结构进行调整。
  • 如果搜索结果页面使用了JavaScript动态加载内容,那么WebDriverWait是确保内容完全加载的关键。
  • ExpectedConditions提供了多种等待条件,可以根据需要选择合适的条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值