Java Selenium 自动化UI测试
思想
1. 使用 srping 解耦
2. 分层封装思想: driver | pages | testCases
初步实现
Maven 配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>autoUI</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
</dependencies>
</project>
spring 配置文件
- lazy-init="true" 保证 spring 工厂创建时机是在我们调用 getBean 方法时
- init-method 是在创建子类实例之后调用父类的 init 方法,访问网页
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="webdriver" class="org.openqa.selenium.chrome.ChromeDriver" lazy-init="true"/>
<bean id="baiDuHomePage" class="com.rao.pages.BaiDuHomePage" lazy-init="true" init-method="init">
<property name="url" value="http://www.baidu.com"/>
<property name="webDriver" ref="webdriver"/>
</bean>
<bean id="csdnHomePage" class="com.rao.pages.CSDNHomePage" init-method="init" lazy-init="true">
<property name="url" value="https://www.csdn.net/"/>
<property name="webDriver" ref="webdriver"/>
</bean>
</beans>
BasePage
package com.rao.pages;
import lombok.Data;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
@Data
public class BasePage {
private WebDriver webDriver;
private String url;
public void init() {
PageFactory.initElements(webDriver, this);
webDriver.get(url);
}
}
测试页面
- 建议测试页面只编写页面元素,从而更好的解耦
- 具体对于元素的操作可封装在测试用例中
package com.rao.pages;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class BaiDuHomePage extends BasePage {
@FindBy(id = "kw")
private WebElement searchBox;
@FindBy(id = "su")
private WebElement searchButton;
}