网站首页 > 开源技术 正文
说起Selenium,很多人想到的是Selenium用在自动化web测试上,的确,Selenium是一个很好的自动化测试工具,能够实现很多便利的测试功能。其实Selenium也是一款数据抽取的神器。我们知道现在很多网站使用了很多javascript,ajax,cookie,session等等,或者人为设置了很多规则来防止/限制爬虫,有过提取数据的都知道在提取数据的过程中,会遇到各种顽固性问题,像上篇介绍的httpclient之类,虽然做了一些东西,但还是存在很多不足,尤其是JS解析,支持很有限。这个时候就可以试试Selenium这款神器了。
Selenium IDE
先来说说Selenium IDE,这个是Selenium通过图形界面的方式,很方便支持web页面操作,而且可以记录操作的过程,形成脚本,不过目前只有FireFox插件,其他的浏览器不支持。 所以我们说的Selenium IDE其实就是一个FireFox插件。下载/安装好插件之后,FireFox浏览器右上角就多了一个Se的图标,就是Selenium IDE了,就可以使用。
一如你般聪明,很容易就知道怎么开始了。想要导出各种脚本,也是很容易的.
多种语言可以选择,你值得拥有。
不过话说这种方式还是有不少坑的:首先下载插件都不容易,Selenium官网好像被强了,基本下载不了;FireFox版本和Selenium IDE版本要对应,不然就经常出现很多错误;录制的脚本经常回放不了,这个比较悲催了。
Selenium RC
Selenium server端,也就是Selenium Remote Control简称RC,RC主要包括三个部分,launcher,http proxy,selenium core, 其中selenium core是由一堆javascript函数构成,通过调用这些函数,来实现对浏览器的各种操作。Selenium2主要解决了几点1.没有原生的鼠标和键盘事件;2.XSS/HTTP同源数据问题;3.popup dialog问题。Webdriver对不同浏览器的处理和Selenium1.0有着明显的不同,Selenium1.0不管是什么浏览器,都是由javascript来处理,而webdriver是选择浏览器最容易识别的语言来处理,比如在Firefox中javascript最容易,在IE中C++最容易识别,通过灵活选择最容易识别的语言来处理多浏览器,我们就可以很好的回避某些浏览器对javascript的安全限制,Webdriver不仅可以处理这方面的问题,而且可以调用操作系统API,尤其是当用户需要模拟鼠标或键盘操作时,这项能力的作用表现的尤其明显。目前支持主流的浏览器,包括chrome,firefox,IE等,使用的时候要下载对应的driver.
有了server端,我们就可以通过代码来控制各种操作,发送命令给服务端,接受到返回的结果,解析返回的结果。
下面通过简短的代码片段来说明下:
// System.setProperty("webdriver.firefox.bin",
// "D:/Program Files/Mozilla firefox33/firefox.exe");
System.setProperty("webdriver.chrome.bin",
"C:/Program Files/Google/Chrome/Application/chrome.exe");
WebDriver driver = new ChromeDriver();
driver.get(baseUrl + "/"); //访问一个页面
driver.manage().window().maximize();//浏览器最大化
// Thread.sleep(2000);
Actions a = new Actions(driver);
a.click(driver.findElement(By.linkText("供应商")));// not work???
// driver.findElement(By.linkText("供应商")).click();
// Thread.sleep(2000);
driver.findElement(By.id("alisearch-keywords")).clear();
driver.findElement(By.id("alisearch-keywords")).sendKeys(key);
driver.findElement(By.id("alisearch-submit")).submit();
Actions action = new Actions(driver);
action.sendKeys(Keys.ENTER);// 模拟按下并释放 TAB键
经常遇到鼠标点击数据不工作,没有效果,可以试试这个:
WebElement we = driver.findElement(By.linkText("" + i));
act.moveToElement(we).perform(); //先移动到某个元素,然后执行
需要说明的是,代码中有很多sleep的时候,因为由于网络等各方面的原因,经常需要等待,不然会现在元素不存在的异常。
每次跳转到新的页面,我们可以遍历元素或者driver.getPageSource()得到所有的响应,来解析响应提取的部分,这样也是很方便的。
猜你喜欢
- 2024-10-13 Selenium自动化测试(Selenium自动化测试脚本)
- 2024-10-13 Python爬取动态网页之selenium扫盲篇
- 2024-10-13 Python Selenium 变量与选择器选择元素
- 2024-10-13 手把手教会你selenium无代码自动化测试工具
- 2024-10-13 一文搞懂pytest+selenium编写网页UI自动化脚本和用例
- 2024-10-13 骗子进军 AI 领域!一边“删号跑路”,一边研发“新业务”
- 2024-10-13 Selenim2和Selenium3的区别(seleniumide)
- 2024-10-13 Selenium2入门(一)简介(selenium基本使用方法)
- 2024-10-13 Selenium ---Web自动化测试的神兵利器,值得收藏!
- 2024-10-13 录制web 自动化测试用例(录制web 自动化测试用例的软件)
你 发表评论:
欢迎- 03-26业务监控—一站式搭建jmeter+telegraf+influxdb+Grafana看板
- 03-2615个最好的性能测试工具(软件测试工程师必备)
- 03-26软件测试工程师必备技巧!(软件测试工程师入门教程)
- 03-26UE4基础知识总结(七)(ue4入门)
- 03-26Portkeys推出新款HDMI播放器:5.5英寸FHD屏幕,支持4K输入/输出
- 03-26数字时代的纯粹,HiFiMan HM-901S 播放器体验
- 03-26CBN丨Double 11 sales shows resilience in China’s consumption
- 03-26AKG K812简单听感(akgk812pro评测)
- 最近发表
-
- 业务监控—一站式搭建jmeter+telegraf+influxdb+Grafana看板
- 15个最好的性能测试工具(软件测试工程师必备)
- 软件测试工程师必备技巧!(软件测试工程师入门教程)
- UE4基础知识总结(七)(ue4入门)
- Portkeys推出新款HDMI播放器:5.5英寸FHD屏幕,支持4K输入/输出
- 数字时代的纯粹,HiFiMan HM-901S 播放器体验
- CBN丨Double 11 sales shows resilience in China’s consumption
- AKG K812简单听感(akgk812pro评测)
- 盘点索尼Walkman发展史,哪台播放器让你印象深刻
- LUXMAN力仕 DA-07X 解码器#发烧hifi
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)