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>
  • 相关阅读:
    IOS回调机制总结
    2.25~当svn服务器ip地址变了怎么办?
    ubuntu硬件信息,内存DDR详细信息
    关于JS相等比较算法(==)的原理
    ubuntu更改鼠标滚轮方向为自然方向(运动方向和滚轮滚动方向一致)
    C#模拟js的Json对象创建,操作
    关于json返回日期格式化的解决方案
    js定时器 timer
    ubuntu GUI界面复制文件没权限的解决方案
    CodeSmith 模板
  • 原文地址:https://www.cnblogs.com/karl-python/p/9222137.html
Copyright © 2011-2022 走看看