码迷,mamicode.com
首页 > 编程语言 > 详细

selenium基础心得(java运用 一)

时间:2018-09-17 21:00:40      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:frame   方法   driver   selenium   获取   运行   文本   爬虫   key   

Selenium是一个web应用程序测试工具,直接运行于浏览器中,模拟用户操作.近两个月的时间,我们的工作主要是使用其部分特性来做爬虫.在使用的过程中,从技术预演到项目整合,一些个人总结如下:

(1) Selenium直接运行浏览器中,使用环境要求驱动版本和浏览器版本必须对应.selenium核心使用 JavaScript 编写,意味着它支持多种浏览器,但在我测试了多个浏览器后发现,ie浏览器运用selenium的时候效率明显低于其他浏览器,主要表现在使用方法sendKeys()填写数据的时候ie会逐个字符的填写造成效率底下,这不排除和我测试ie时使用的浏览器驱动版本有关,暂时还未测试更多版本.目前项目使用Chrome浏览器.

(2) Selenium可以通过多种方式定位到页面元素,基本定位方式有八种:

  1. By.Id  :通过id属性定位
  2. By.ClassName: 通过伪类名定位
  3. By.cssSelector : 样式匹配
  4. By.Name:  通过name属性定位
  5. By.linkText : 通过超文本链接上的文字信息来定位元素
  6. By.partialLinkText :通过部分链接文字进行匹配
  7. By.tagName :通过元素的标签名称来查找元素
  8. By.Xpath :通过元素在页面的路径匹配

目前我所常用的时元素地址定位(绝对路径和相对路径),元素属性定位(id,name),实际运用中页面一些元素的的表现形式比较复杂,比如一些设置了隐藏就无法直接使用上述方法获取定位到元素,或者一些元素定位到无法获取里面的值,这可能需要使用js注入或者使用document 的属性: innerHTMLinnerText 来解决.

(3) 在获取页面元素之前需要保证driver对象在同一个页面或者同一个frame,否则driver无法获取到元素,需要使用switchTo方法让driver进入相应的操作页面或者frame,需要注意的是本次操作完成后还需要让driver回到默认的页面或者frame才能继续操作其他页面.

(4) Selenium中的Action对象提供了多种方法模拟鼠标移动轨迹以及点击拖拽功能,可以解决一些滑动验证以及坐标精准定位问题.

(5) 一些页面渲染需要时间,selenium找不到这个元素的时候回立刻报错,这个时候需要设置等待时间来等待页面渲染完成,主要有三种等待方法,1.隐式等待 2.显示等待 3.线程死等.实际运用过程中需结合实际页面情况结合使用三种方法,其中线程等待需尽量少用,以避免发生线程堵塞等情况.

(6) Selenium没有提供判断元素是否存在的方法,很多情况我们需要判断一个元素是否存在来判断程序是否需要继续执行,比如页面概率出现的弹窗.目前只能自己写方法判定元素是否存在.

(7) 一些网站有反爬机制,selenium 做爬虫依然会被检测到从而被中断页面操作.一些ip并发问题可以使用代理ip解决;为了防止爬虫的重复操作造成的被反爬问题,目前正使用加入随机时间让操作流程更加接近用户操作行为;

selenium基础心得(java运用 一)

标签:frame   方法   driver   selenium   获取   运行   文本   爬虫   key   

原文地址:https://www.cnblogs.com/wj-java/p/9664774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!