资讯专栏INFORMATION COLUMN

使用 Selenium 进行模拟登入和页面内容的获取

thursday / 2154人阅读

摘要:传统的无法执行页面中的浏览器脚本,并且在抓取一些对爬虫有限制的网页时,往往要设定详细的来突破限制,编写起来较为复杂。直接使用浏览器运行,像真正的用户在操作。支持以下方式进行选择元素各种库对情况的检测方法

传统的 cURL 无法执行页面中的浏览器脚本,并且在抓取一些对爬虫有限制的网页时,往往要设定详细的 http header 来突破限制,编写起来较为复杂。

Selenium简介:

Selenium 是一个用于Web应用程序测试的工具(用处也不仅仅是测试)。
Selenium 直接使用浏览器运行,像真正的用户在操作。支持较多的浏览器。

组件

Selenium IDE:Firefox插件,有录制脚本的功能。支持自动录制动作和自动生成其他语言的自动化脚本。

Selenium Remote Control (RC) :支持多种平台(Windows,Linux)和多浏览器(IE,Firefox,Opera,Safari,Chrome),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写用例。

Selenium Grid :允许Selenium-RC 针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。


实例:驱动 chrome 模拟登入淘宝,获取页面信息

1.前往项目主页:SeleniumHQ 下载

Selenium Server (formerly the Selenium RC Server)

Third Party Browser Drivers NOT DEVELOPED by seleniumhq

(选择chrome的driver)

Third Party Language Bindings NOT DEVELOPED by seleniumhq

(选择PHP by Adam Goucher (SeHQ recommended php client))

2.打开 selenium

java -jar path_to_selenium.jar 
[-timeout 0] 
[-Dwebdriver.server.session.timeout=0] 
-Dwebdriver.chrome.driver="path_to_chrome_driver"
-browser [-timeout=0] [-browserTimeout=0]
browserName=chrome,[timeout=0]

如需长时间运行请酌情设置各 "[ ]" 中的超时时间

3.PHP代码

execute(array("script" => "return (document.readyState != "complete")", "args" => array())));
}  //该函数会把脚本挂起直到等待到Ajax结束

require_once "webdriver/PHPWebDriver/__init__.php";
// 引入 selenium 的PHP封装函数库
// 下载地址:https://github.com/Element-34/php-webdriver
// 文档中有各种操作浏览器方法,如获取所有cookie等

$wd_host = "http://127.0.0.1:4444/wd/hub";
$web_driver = new PHPWebDriver_WebDriver($wd_host);

$session = $web_driver->session("chrome");

//设置超时时间
$session->implicitlyWait(5);
$session->setScriptTimeout(5);
$session->setPageLoadTimeout(15);

//打开连接
$session->open("http://login.m.taobao.com/login.htm?tpl_redirect_url=http://m.taobao.com");

//输入验证码用,如果需要的话
sleep(5);

//请设置好帐号密码
$session->element("css selector", "input[name=TPL_username]")->value(array("value" => str_split("your_username")));
$session->element("css selector", "input[name=TPL_password]")->value(array("value" => str_split("your_password")));

//模拟点击登入按钮
$elements = $session->element("css selector", ".c-btn-oran-big")->click();

//打开 m.taobao.com,此时已获取到cookie
$session->open("http://m.taobao.com/");

//等待ajax加载完毕
waitForAjax();

$elements = $session->element("css selector", "body")->text();
//获得了登入后ajax执行完毕时的页面内容
?>

之后便可以按需对 $session 实例进行 element 方法的各种操作。

支持以下方式进行选择元素

id

xpath

link text

partial link text

name

tag name

class name

css selector


PS:各种库对Ajax情况的检测方法

jQuery: "jQuery.active"

Prototype: "Ajax.activeRequestCount"

Dojo: "dojo.io.XMLHTTPTransport.inFlight.length"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20603.html

相关文章

  • 使用 Selenium 抓取网页内容模拟登入

    摘要:传统的无法执行页面中的浏览器脚本,并且在抓取一些对爬虫有限制的网页时,往往要设定详细的来突破限制,编写起来较为复杂。直接使用浏览器运行,像真正的用户在操作。支持以下方式进行选择元素各种库对情况的检测方法 传统的 cURL 无法执行页面中的浏览器脚本,并且在抓取一些对爬虫有限制的网页时,往往要设定详细的 http header 来突破限制,编写起来较为复杂。 Selenium简介: ...

    mylxsw 评论0 收藏0
  • 有赞 WEB-UI 自动化实践

    摘要:概述是由有赞开发的自动化工具,并以此实现了端和端的核心业务的自动化。旨在简化开源工具提供的接口,方便自动化测试用例的设计。元素定位自动化用例其实可以分成两部分,定位元素调用接口操作该元素。一台用于跑自动化用例的服务器。 概述 Bee 是由有赞 QA 开发的 UI 自动化工具,并以此实现了 web 端和 wap 端的核心业务的自动化。旨在简化开源工具提供的接口,方便 UI 自动化测试用例...

    h9911 评论0 收藏0
  • 使用selenium模拟浏览器抓取淘宝商品美食信息

    摘要:目标通过模拟浏览器抓取淘宝商品美食信息,并存储到数据库中。流程框架淘宝页面比较复杂,含有各种请求参数和加密参数,如果直接请求或者分析将会非常繁琐。 目标 通过Selenium模拟浏览器抓取淘宝商品美食信息,并存储到MongoDB数据库中。 流程框架 淘宝页面比较复杂,含有各种请求参数和加密参数,如果直接请求或者分析Ajax将会非常繁琐。Selenium是一个自动化测试工具,可以驱动浏览...

    djfml 评论0 收藏0
  • 【Python爬虫】4万字,详解selenium从入门到实战【错过再无】

    摘要:难在哪里根据上面的标签需要定位最后一行标签,以下列出了四种方式,定位的方式多样并不唯一,使用时根据情况进行解析即可。加入每日一练我们使用并指明标签内全部文本即可定位。 ...

    shiyang6017 评论0 收藏0
  • ❤️爬虫+自动化利器 selenium 之自学成才篇(一)❤️

    文章目录 selenium 简介selenium安装安装浏览器驱动确定浏览器版本下载驱动 定位页面元素打开指定页面id 定位name 定位class 定位tag 定位xpath 定位css 定位link 定位partial_link 定位 浏览器控制修改浏览器窗口大小浏览器前进&后退浏览器刷新浏览器窗口切换常见操作 鼠标控制单击左键单击右键双击拖动鼠标悬停 键盘控制 seleni...

    james 评论0 收藏0

发表评论

0条评论

thursday

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<