- webdriver
Selenium是一套Web自动化测试工具。
它分为3个组件:
1)Selenium IDE
2)Selenium RC (Remote Control)
3)Selenium Webdriver
Selenium IDE 是Firefox的一个插件,允许测试人员录制脚本并回放。
Selenium RC和Selenium Webdriver是测试框架,提供多种语言的API。不同的是,后者以一种更底层、更灵活的方式来操作浏览器,并不仅仅使用Javascript。
Selenium Webdriver主要用来解决https的加密问题。
webdriver在使用前,需要下载一个浏览器对应的驱动插件。
Chrome对应的驱动插件chromedriver下载地址如下:
链接:https://pan.baidu.com/share/init?surl=qZ2LfmW 密码:qixa
下载后,把chromedriver放在google.exe所在的目录下
八种选择器:
1) find_elements_by_name()
2) find_elements_by_id()
3) find_elements_by_class_name()
4) find_elements_by_tag_name()
5) find_elements_by_link_text()
6) xpath 这个特别强大,所有的元素都可以通过这个可以找到。
XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。
绝对路径: 根元素开始,及html开始用/
相对路劲: 任意符合条件的元素 //
查找页面上所有的input元素://input
查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示,单/号)://form[1]/input
查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)://form[1]//input
查找页面上第一个form元素://form[1]
查找页面上id为loginForm的form元素://form[@id='loginForm']
查找页面上具有name属性为username的input元素://input[@name='username']
查找页面上id为loginForm的form元素下的第一个input元素://form[@id='loginForm']/input[1]
查找页面具有name属性为contiune并且type属性为button的input元素://input[@name='continue'][@type='button']
查找页面上id为loginForm的form元素下第4个input元素://form[@id='loginForm']/input[4]
控件操作:
1)输入框:
element.clear()
element.sendkeys()
element.text()
2)按钮:
element.click()
3)表单提交:
element.submit()
4)单选框/复选框
element.clear()
element = browser.find_elements_by_id('checkbox')
element.click()
webdriver常用方法:
browser.get_cookies()
browser.title()
blowser.close()
browser.forward()
browser.back()
browser.refresh()
browser.refresh()
- 习题1
1 import requests 2 from bs4 import BeautifulSoup 3 4 5 url = "http://www.apelearn.com/study_v2/chapter1.html" 6 7 session = requests.session() 8 res = session.get(url=url) 9 res.encoding = res.apparent_encoding 10 html_doc = res.text 11 # print(html_doc) 12 # print(type(html_doc)) 13 14 soup = BeautifulSoup("<html>data</html>") 15 print(soup)
- 习题2
1 import os 2 3 import time 4 from selenium import webdriver 5 from selenium.webdriver.common.keys import Keys 6 7 chromedriver = "C:Program Files (x86)GoogleChromeApplicationchromedriver.exe" 8 os.environ["webdriver.chrome.driver"] = chromedriver 9 driver = webdriver.Chrome(chromedriver) 10 driver.get("http://www.python.org") 11 time.sleep(10) 12 driver.quit()
- 习题3
1 import os 2 3 from selenium import webdriver 4 5 6 def randomSleep(minS, maxS): 7 time.sleep((maxS-minS)*random.random() + minS) 8 9 10 url = 'https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F' 11 chromedriver = "C:Program Files (x86)GoogleChromeApplicationchromedriver.exe" 12 os.environ["webdriver.chrome.driver"] = chromedriver 13 driver = webdriver.Chrome(chromedriver) 14 driver.get(url) 15 randomSleep(1, 3) 16 driver.find_elements_by_xpath('//a[@clstag="pageclick|keycount|login_pc_201804112|10"]')[0].click() 17 18 randomSleep(1, 2) 19 driver.find_element_by_id('loginname').clear() 20 randomSleep(1, 3) 21 driver.find_element_by_id('loginname').send_keys("18910148469") 22 randomSleep(1, 2) 23 driver.find_element_by_id('nloginpwd').send_keys("xxxx") 24 25 randomSleep(3, 5) 26 driver.find_element_by_id('loginsubmit').click() 27 randomSleep(5, 10) 28 29 print(driver.get_cookies()) 30 31 driver.close()
- 习题4
1 import random 2 import time 3 4 import os 5 6 from selenium import webdriver 7 8 url = 'https://kyfw.12306.cn/otn/login/init' 9 10 def randomSleep(minS, maxS): 11 time.sleep((maxS-minS)*random.random() + minS) 12 time.sleep((maxS-minS)*random.random() + minS) 13 14 chromedriver = "C:Program Files (x86)GoogleChromeApplicationchromedriver.exe" 15 os.environ["webdriver.chrome.driver"] = chromedriver 16 driver = webdriver.Chrome(chromedriver) 17 18 19 driver.get(url=url) 20 randomSleep(2, 5) 21 driver.find_element_by_id("username").clear() 22 randomSleep(1, 3) 23 driver.find_element_by_id("username").send_keys("974644081@qq.com") 24 randomSleep(3, 5) 25 driver.find_element_by_id("password").send_keys("xxx") 26 randomSleep(10, 15) 27 28 driver.find_element_by_id("loginSub").click() 29 randomSleep(10, 20) 30 print(driver.get_cookies()) 31 driver.close()
- index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>第1章 前言 — Linux入门教程_linux电子书 - 跟阿铭学linux(第2版)</title> 10 11 <link rel="stylesheet" href="_static/agogo.css" type="text/css" /> 12 <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> 13 14 <script type="text/javascript"> 15 var DOCUMENTATION_OPTIONS = { 16 URL_ROOT: './', 17 VERSION: '2', 18 COLLAPSE_INDEX: false, 19 FILE_SUFFIX: '.html', 20 HAS_SOURCE: true 21 }; 22 </script> 23 <script type="text/javascript" src="_static/jquery.js"></script> 24 <script type="text/javascript" src="_static/underscore.js"></script> 25 <script type="text/javascript" src="_static/doctools.js"></script> 26 <script type="text/javascript" src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 27 <link rel="top" title="Linux入门教程_linux电子书 - 跟阿铭学linux(第2版)" href="index.html" /> 28 <link rel="next" title="第2章 关于Linux的历史" href="chapter2.html" /> 29 <link rel="prev" title="跟阿铭学Linux(第2版)" href="index.html" /> 30 </head> 31 <body role="document"> 32 <div class="header-wrapper" role="banner"> 33 <div class="header"> 34 <div class="headertitle"><a 35 href="index.html">Linux入门教程_linux电子书 - 跟阿铭学linux(第2版)</a></div> 36 <div class="rel" role="navigation" aria-label="related navigation"> 37 <a href="index.html" title="跟阿铭学Linux(第2版)" 38 accesskey="P">previous</a> | 39 <a href="chapter2.html" title="第2章 关于Linux的历史" 40 accesskey="N">next</a> | 41 <a href="index.html" title="General Index" 42 accesskey="I">index</a> | <a href="http://www.aminglinux.com/bbs/" target="_blank">阿铭论坛</a> 43 </div> 44 </div> 45 </div> 46 47 <div class="content-wrapper"> 48 <div class="content"> 49 <div class="document"> 50 51 <div class="documentwrapper"> 52 <div class="bodywrapper"> 53 <div class="body" role="main"> 54 55 <div class="section" id="id1"> 56 <h1>第1章 前言<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h1> 57 <p>学习Linux请加QQ群: 群1(374576544) 群2(148412746) 群3(246401509) 群4(173884211)</p> 58 <p>跟阿铭学Linux邀请函 (<a class="reference external" href="http://www.aminglinux.com" target="_blank">http://www.aminglinux.com</a>),<font color="red"><b>猿课已上线,请加微信aminglinux11索要配套视频教程。</b></font></p> 59 <p>阿铭出此书的目的就是为了帮助新人快速进入这个行业,市面上很多类似书籍都是重理论少实战,而且很复杂,因为这样才能体现写书人的本领,一个命令也能给你讲几页纸,而阿铭这个教程会让你学的很轻松,因为阿铭会帮你过滤掉很多用不上的知识,你能学到的都是你以后工作当中要用到的,第一版教材《跟阿铭学Linux》截止目前已下载10000多次,阅读量阿铭实在没法统计,阿铭真心感谢他们的支持,是他们让我再有动力去更新这本书。也许在不久的将来阿铭还会出视频教程,欢迎大家前来捧场!早在一年前就有很多朋友建议我出第2版,但由于工作太忙迟迟未能如愿以偿。两年后的今天,阿铭下定决心重新改进我的教程,让更多的Linux爱好者收益!阿铭只想帮助那些对Linux感兴趣,并且想快速入门的朋友。</p> 60 <p>阿铭在第一版中,曾提过写这本书的目的是为了写给我第一个学生,让其快速成长。两年过去了,我的这个学生早已经成为公司里不可或缺的核心技术人员,当然薪水也已经上万啦!不瞒大家,我的第一位学生是个女生,虽然毕业于计算机专业,但是她在看我的书之前,对于Linux一点都不懂!是这本书带她入门,改变了她的职业生涯。阿铭写这些,只是为了给大家打打气,Linux入门不难,阿铭有信心带你入门,甚至让你成为一名高级的Linux系统工程师!你是不是计算机专业不重要,你有没有高学历也不重要,重要的是你能够坚持下去,认真的跟阿铭做完书中提到的每一个小实验。</p> 61 <p>最后,衷心地祝愿所有看这本书的读者朋友,学有所成!</p> 62 <p>教程答疑: <a class="reference external" href="http://www.aminglinux.com/bbs/forum-40-1.html" target="_blank">请移步这里</a>.</p> 63 <p>欢迎你加入 <a class="reference external" href="http://www.aminglinux.com" target="_blank">阿铭学院</a> 和阿铭一起学习Linux,让阿铭成为你Linux生涯中永远的朋友吧!</p> 64 </div> 65 66 67 </div> 68 </div> 69 </div> 70 </div> 71 <div class="sidebar"> 72 <h3>目录列表</h3> 73 <ul class="current"> 74 <li class="toctree-l1 current"><a class="current reference internal" href="">第1章 前言</a></li> 75 <li class="toctree-l1"><a class="reference internal" href="chapter2.html">第2章 关于Linux的历史</a></li> 76 <li class="toctree-l1"><a class="reference internal" href="chapter3.html">第3章 对Linux系统管理员的建议</a></li> 77 <li class="toctree-l1"><a class="reference internal" href="chapter4.html">第4章 安装Linux操作系统</a></li> 78 <li class="toctree-l1"><a class="reference internal" href="chapter5.html">第5章 初步认识Linux</a></li> 79 <li class="toctree-l1"><a class="reference internal" href="chapter6.html">第6章 Linux系统的远程登陆</a></li> 80 <li class="toctree-l1"><a class="reference internal" href="chapter7.html">第7章 Linux文件与目录管理</a></li> 81 <li class="toctree-l1"><a class="reference internal" href="chapter8.html">第8章 Linux系统用户及用户组管理</a></li> 82 <li class="toctree-l1"><a class="reference internal" href="chapter9.html">第9章 Linux磁盘管理</a></li> 83 <li class="toctree-l1"><a class="reference internal" href="chapter10.html">第10章 文本编辑工具vim</a></li> 84 <li class="toctree-l1"><a class="reference internal" href="chapter11.html">第11章 文档的压缩与打包</a></li> 85 <li class="toctree-l1"><a class="reference internal" href="chapter12.html">第12章 安装RPM包或者安装源码包</a></li> 86 <li class="toctree-l1"><a class="reference internal" href="chapter13.html">第13章 学习 shell脚本之前的基础知识</a></li> 87 <li class="toctree-l1"><a class="reference internal" href="chapter14.html">第14章 正则表达式</a></li> 88 <li class="toctree-l1"><a class="reference internal" href="chapter15.html">第15章 shell脚本</a></li> 89 <li class="toctree-l1"><a class="reference internal" href="chapter16.html">第16章 linux系统日常管理</a></li> 90 <li class="toctree-l1"><a class="reference internal" href="chapter17.html">第17章 LAMP环境搭建</a></li> 91 <li class="toctree-l1"><a class="reference internal" href="chapter18.html">第18章 LNMP环境搭建</a></li> 92 <li class="toctree-l1"><a class="reference internal" href="chapter19.html">第19章 学会使用简单的MySQL操作</a></li> 93 <li class="toctree-l1"><a class="reference internal" href="chapter20.html">第20章 NFS服务配置</a></li> 94 <li class="toctree-l1"><a class="reference internal" href="chapter21.html">第21章 配置FTP服务</a></li> 95 <li class="toctree-l1"><a class="reference internal" href="chapter22.html">第22章 配置Squid服务</a></li> 96 <li class="toctree-l1"><a class="reference internal" href="chapter23.html">第23章 配置Tomcat</a></li> 97 <li class="toctree-l1"><a class="reference internal" href="chapter24.html">第24章 配置Samba服务器</a></li> 98 <li class="toctree-l1"><a class="reference internal" href="chapter25.html">第25章 MySQL replication(主从)配置</a></li> 99 <li class="toctree-l1"><a class="reference internal" href="chapter26.html">结语</a></li> 100 </ul> 101 102 <div role="search"> 103 <br><h4>阿铭著作:</h4><a href=http://www.aminglinux.com/bbs/thread-6702-1-1.html target=_blank><img src="_images/aming1.jpg" ></img></a><br><img src="_images/aminglinux_weixin.jpg"></img><h4>微信扫码获取最新版linux电子书和视频</h4><h3 style="margin-top: 1.5em;">Search</h3> 104 <form class="search" action="search.html" method="get"> 105 <input type="text" name="q" /> 106 <input type="submit" value="Go" /> 107 <input type="hidden" name="check_keywords" value="yes" /> 108 <input type="hidden" name="area" value="default" /> 109 </form> 110 <p class="searchtip" style="font-size: 90%"> 111 Enter search terms or a module, class or function name. 112 </p> 113 </div> 114 </div> 115 <div class="clearer"></div> 116 </div> 117 </div> 118 119 <div class="footer-wrapper"> 120 <div class="footer"> 121 <div class="left"> 122 <div role="navigation" aria-label="related navigaton"> 123 <a href="index.html" title="跟阿铭学Linux(第2版)" 124 >previous</a> | 125 <a href="chapter2.html" title="第2章 关于Linux的历史" 126 >next</a> | 127 <a href="index.html" title="General Index" 128 >index</a> 129 </div> 130 <div role="note" aria-label="source link"> 131 <br/> 132 <a href="_sources/chapter1.txt" 133 rel="nofollow"></a> 134 </div> 135 </div> 136 137 <div class="right"> 138 139 <div class="footer" role="contentinfo"> 140 © Copyright 2013, lishiming.net. 141 Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3b1<script language="javascript" type="text/javascript" src="http://js.users.51.la/4350538.js"></script>. 142 </div> 143 </div> 144 <div class="clearer"></div> 145 </div> 146 </div> 147 148 </body> 149 </html>