研究学习之java使用selenium教程[通俗易懂]

研究学习之java使用selenium教程[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

大家好,又见面了,我是你们的朋友全栈君。

前言

目标网站:http://www.nhc.gov.cn 比我想象中要难爬的多,反爬机制是真的强。学习爬虫的朋友可以试试。这里介绍一种万能的方法,万金油selenium

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

https://www.javadoc.io/doc/org.seleniumhq.selenium/selenium-api/2.50.1/org/openqa/selenium/WebDriver.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>2.33.0</version>
    </dependency>

2.下载相关的浏览器和驱动(很重要,这里做过反爬处理)

点我下载
编译好的Chromedriver,特征已经被抹除目前只有windows10版本

先安装浏览器,然后把驱动chromedriver.exe放入浏览器安装,目录Application目录下即可

3.核心代码

代码如下:

public static void main(String[] args) { 
   
        //参数配置 
        System.setProperty("webdriver.chrome.driver",
                "C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe");
        WebDriver driver;
        ChromeOptions option = new ChromeOptions();
        option.addArguments("no-sandbox");//禁用沙盒
        //通过ChromeOptions的setExperimentalOption方法,传下面两个参数来禁止掉谷歌受自动化控制的信息栏
        option.setExperimentalOptions("useAutomationExtension", false);
        option.setExperimentalOptions("excludeSwitches", Collections.singletonList("enable-automation"));
        driver = new ChromeDriver(option);
        driver.get("http://www.nhc.gov.cn/renshi/s7753/202012/6c709fb0aa9c480299d4a2b351c16058.shtml");
        String html=driver.getPageSource();
        // 这里只是打印源码,后续可以根据自己的需求来解析相关的数据
        System.out.println(html);
         driver.close();
    }

结果如下:

在这里插入图片描述

在这里插入图片描述


总结

成功的重点是一定要使用我这里提供的驱动,如果文章中有哪里没有讲明白,或者讲解有误的地方,欢迎在评论区批评指正!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154053.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • android ListView 例子

    android ListView 例子ListView是比较常用的控件之一,在这里总结一下,方便查阅。程序效果是实现一个ListView,ListView里面有标题、内容和图片,并加入单击和长按响应。步骤:1.首先在activity_main.xml中定义一个ListView。

  • AD域介绍

    AD域介绍域的背景介绍为什么要使用域?假设你是公司的系统管理员,你们公司有一千台电脑。如果你要为每台电脑设置登录帐户,设置权限(比如是否允许登录帐户安装软件),那你要分别坐在这一千台电脑前工作。如果你要做一些改变,你也要分别在这一千台电脑上修改。相信没有哪个管理员想要用这种不吃不喝不睡觉的方式来工作,所以就应运而生了域的概念。域(Domain):概念域模型就是针对大型网络的管理需求而设计的,域就是共享用户账号,计算机账号和安全策略的计算机集合。域的管理优点因为所有的用户信息都被集中存储,所以,域提供了集

  • js中倒计时_js倒计时特效

    js中倒计时_js倒计时特效利用setInterval制作简单的js倒计时,点击按钮将触发定时器且按钮不可用html:获取校验码JS: vari; functiongetCode(){ $(“#code”).attr({“disabled”:”disabled”}); i=self.setInterval(“countdown()”,1000); } varint=1

  • linux 安装tinyxml,使用TinyXml「建议收藏」

    linux 安装tinyxml,使用TinyXml「建议收藏」使用TinyXml的两种方法。第一,导入所需的头文件和cpp文件TinyXml由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)导入工程就可以用它的东西了。这就是开源的好处,就跟你自己写的程序一样,想怎么用都行。…

  • 【17】进大厂必须掌握的面试题-50个Angular面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 我们整理了一份主要的Angular面试问题清单,分为三部分: 角度面试问题–初学者水平 角度面试问题–中级 角度面试…

  • android 混淆规则作用,Android代码混淆详解

    android 混淆规则作用,Android代码混淆详解一、混淆的意义混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,同时也有效缩减了apk的体积。总结如下:1、将项目中的类、方法、变量等信息进行重命名,变成一些无意义的简短名字。2、移除未被使用的类、方法、变量等。二、混淆的规则和配置…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号