2018年6月23日笔记

  • 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)\Google\Chrome\Application\chromedriver.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)\Google\Chrome\Application\chromedriver.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)\Google\Chrome\Application\chromedriver.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("[email protected]")
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章 前言 &mdash; 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         &copy; 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>

猜你喜欢

转载自www.cnblogs.com/karl-python/p/9222137.html