准备环境
拉取镜像
docker pull selenium/hub
docker pull selenium/node-chrome
创建网络
docker network create --subnet=172.18.26.0/24 dockernet_br26
启动容器
docker run -d -p 4444:4444 --net dockernet_br26 --ip 172.18.26.2 --name selenium-hub selenium/hub
docker run -d --net dockernet_br26 --ip 172.18.26.3 -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome
通过宿主机IP加上4444 端口进行访问
http://IP:4444/wb/hub
或者访问 console http://ip:4444/wb/console
如此即为安装成功
编码
这里使用java进行编码测试
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
import java.net.URL;
import java.time.Duration;
import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;
public class testRemote {
@Test
public void test1() {
URL url = null;
try {
url = new URL("http://IP:4444/wd/hub/");
} catch (Exception e) {
System.out.println(e.getCause());
}
ChromeOptions chromeOptions = new ChromeOptions();
// chromeOptions.setCapability("browserVersion", "81");
// chromeOptions.setCapability("platformName", "linux");
DesiredCapabilities DesiredCapabilities = new DesiredCapabilities("chrome", "83", Platform.LINUX);
chromeOptions.addArguments("--headless");
// chromeOptions.addArguments("--disable-extensions"); // disabling extensions
// chromeOptions.addArguments("--disable-gpu"); // applicable to windows os only
// chromeOptions.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
// chromeOptions.addArguments("--no-sandbox");
WebDriver driver = new RemoteWebDriver(url, chromeOptions);
driver.get("http://www.baidu.com");
System.out.println(driver.getTitle());
driver.quit();
}
}
控制台打印:
百度一下,你就知道 即代表测试通过
这时我们就可以通过 WebDriver WebElement 编写代码实现自动化测试。但这样有一点很不好的就是需要针对每一个功能去编写对应的测试代码。
编写Bean 类获取页面元素
同样我们也可以引入新的工具去实现自动录入脚本代码(badbody)。当然手写的更靠谱一些,且目前因为各大浏览器厂商的兼容性不同,不同的网站对于安全策略的使用方式不同的原因,自动录入也会有一些限制。