zoukankan      html  css  js  c++  java
  • 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)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章 前言 &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>
  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/karl-python/p/9222137.html
Copyright © 2011-2022 走看看