Selenium + Java
最近公司用到的东西,关于Selenium的技术,第一次接触到爬虫和Selenium,不是很了解,就学习一下。首先,Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样(都能百度到,不再具体说了),下面说一下本人的操作。(一)安装Selenium的方法: 第一种:通过jar包安装点击Selenium下载 (https://docs.seleniumhq.org/download/)链接 你会看到Selenium Standalone Server的介绍:本人下载的是这个,下载后的文件放在你习惯放置项目相关的地方。
第二种:通过Maven安装(推荐使用)在pom.xml 配置Selenium 相关的dependency。
<!-- selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>下面就开始写代码了。运行代码时会报错,错误提示是没有chrome的驱动,需要下载驱动。(二)selenium3 浏览器驱动1.下载浏览器驱动当selenium升级到3.0之后,对不同的浏览器驱动进行了规范。如果想使用selenium驱动不同的浏览器,必须单独下载并设置不同的浏览器驱动。各浏览器下载地址:Firefox浏览器驱动:geckodriverChrome浏览器驱动:chromedrivertaobao备用地址IE浏览器驱动:IEDriverServerEdge浏览器驱动:MicrosoftWebDriverOpera浏览器驱动:operadriverPhantomJS浏览器驱动:phantomjs注:部分浏览器驱动地址需要科学上网。
2.设置浏览器驱动设置浏览器的地址非常简单。 我们可以手动创建一个存放浏览器驱动的目录,如: C:\driver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>;Path,将“C:\driver”目录添加到Path的值中。
以上的方法是在百度中查到别人的配置方法,本人尝试了几次没有成功,就使用了另外的方法,配置如下:
在启动的配置里面配置chrome驱动需要的path参数3.验证浏览器驱动再次启动项目就ok了,展示效果如下:
(三)selenium元素定位
Selenium提供了8种定位方式。
id
name
class name
tag name
link text
partial link text
xpath
css selector
这8种定位方式在Python selenium中所对应的方法为:
findElement(By.id())
findElement(By.name())
findElement(By.className())
findElement(By.tagName())
findElement(By.linkText())
findElement(By.partialLinkText())
findElement(By.xpath())
findElement(By.cssSelector())
具体使用根据你的需求来的:
本人代码以及运行的效果
控制太输入的结果:
浏览器的效果:
通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
driver.findElement(By.xpath("//*[@id='mobile']"))
driver.findElement(By.xpath("//*[@name='viewport']"))
driver.findElement(By.xpath("//input[@class='login_container']"))
driver.findElement(By.xpath("/html/body/form/span/input"))
driver.findElement(By.xpath("//span[@class='soutu-btn']/input"))
driver.findElement(By.xpath("//form[@id='form']/span/input"))
driver.findElement(By.xpath("//input[@id='' and @name='']"))
通过css定位,css定位有N种写法,这里列几个常用写法:
driver.findElement(By.cssSelector("#mobile")
driver.findElement(By.cssSelector("")
driver.findElement(By.cssSelector(".login_container")
driver.findElement(By.cssSelector("html > body > form > span > input")
driver.findElement(By.cssSelector("span.soutu-btn> input#kw")
driver.findElement(By.cssSelector("form#form > span > input")
由于刚学习,暂时学到了这么多,以后在做补充。
感谢分享:handshake
页:
[1]