前言
Selenium Java API Docs
官方文档:https://www.selenium.dev/selenium/docs/api/java/
Selenium WebDriver | Selenium 中文文档:
https://wizardforcel.gitbooks.io/selenium-doc/content/official-site/selenium-web-driver.html
一、Selenium 是什么?
Selenium 是一组软件工具集,每一个都有不同的方法来支持测试自动化。大多数使用 Selenium 的QA工程师只关注一两个最能满足他们的项目需求的工具上。然而,学习所有的工具你将有更多选择来解决不同类型的测试自动化问题。这一整套工具具备丰富的测试功能,很好的契合了测试各种类型的网站应用的需要。这些操作非常灵活,有多种选择来定位 UI 元素,同时将预期的测试结果和实际的行为进行比较。Selenium 一个最关键的特性是支持在多浏览器平台上进行测试。
二、Selenium 项目简史
Selenium 诞生于 2004 年,当在 ThoughtWorks 工作的 Jason Huggins 在测试一个内部应用时。作为一个聪明的家伙,他意识到相对于每次改动都需要手工进行测试,他的时间应该用得更有价值。他开发了一个可以驱动页面进行交互的 Javascript 库,能让多浏览器自动返回测试结果。那个库最终变成了 Selenium 的核心,它是 Selenium RC(远程控制)和 Selenium IDE 所有功能的基础。Selenium RC 是开拓性的,因为没有其他产品能让你使用自己喜欢的语言来控制浏览器。
Selenium 是一个庞大的工具,所以它也有自己的缺点。由于它使用了基于 Javascript 的自动化引擎,而浏览器对 Javascript 又有很多安全限制,有些事情就难以实现。更糟糕的是,网站应用正变得越来越强大,它们使用了新浏览器提供的各种特性,都使得这些限制让人痛苦不堪。
在 2006 年,一名 Google 的工程师, Simon Stewart 开始基于这个项目进行开发,这个项目被命名为 WebDriver。此时,Google 早已是 Selenium 的重度用户,但是测试工程师们不得不绕过它的限制进行工具。Simon 需要一款能通过浏览器和操作系统的本地方法直接和浏览器进行通话的测试工具,来解决Javascript 环境沙箱的问题。WebDriver 项目的目标就是要解决 Selenium 的痛点。
跳到 2008 年。北京奥运会的召开显示了中国在全球的实力,大规模的次贷危机引发了“大萧条”以来美国最大的经济危机。但是当年最重要的故事是 Selenium 和WebDriver 的合并。Selenium 有着丰富的社区和商业支持,但 WebDriver 显然代表着未来的趋势。两者的合并为所有用户提供了一组通用功能,并且借鉴了一些测试自动化领域最闪光的思想。或许,关于两者合并的最好解释,是由 WebDriver 的开发者,在 2009 年 8 月 6 日发出的一封给社区的联合邮件中提到的:
为什么这两个项目要合并?一部分是因为 WebDriver 弥补了 Selenium 的一些短处(例如提供了一组很棒的 API,绕开浏览器的限制),一部分是因为 Selenium 弥补了 WebDriver 的一些短处(例如对浏览器更广泛的支持),还有一部分是因为 Selenium 的主要贡献者和我都认为这样能为用户提供最优秀的框架。
三、使用步骤
1.引入maven依赖
代码如下:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.3.0</version>
</dependency>
2.下载相关的浏览器和驱动(很重要,这里做过反爬处理)
安装过程
http://blog.gzcity.top/4792.html
3.核心代码
代码如下:
数据辅助类
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import cn.ijiami.detection.helper.PrivacyPolicyHtmlHelper;
public class SeleniumUtils {
public static void main(String[] args) {
String url = "https://open.oppomobile.com/new/developmentDoc/info?id=10288";
ChromeOptions options = new ChromeOptions();
// 设置无头模式
// options..setHeadless(Boolean.TRUE);
// 设置无轨 开发时还是不要加,可以看到浏览器效果
options.addArguments("-headless");
options.addArguments("--disable-gpu");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
// 不加载图片, 提升速度
options.addArguments("--blink-settings=imagesEnabled=false");
// 设置驱动
System.setProperty("webdriver.chrome.driver","F:/tools/chromedriver.exe");
WebDriver driver = new ChromeDriver(options);
//设置超时
driver.manage().timeouts().pageLoadTimeout(3, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);
// 访问地址
driver.get(url);
String source = driver.getPageSource();
System.out.println(source);
}
}
发布者:小站,转转请注明出处:http://blog.gzcity.top/4795.html
评论列表(1条)
Your article helped me a lot, is there any more related content? Thanks! https://www.binance.com/si-LK/register?ref=V2H9AFPY