由于公司网络管管控严格,服务器上访问外网需要进行身份认证(按理说递交个申请给开放相关域名外网访问就好,无奈不给通过,又想马儿跑又不给马吃草),正好前一阵撸课程的时候看到selenium可以实现自动化,顺便撸一波做个记录。
1、安装 selenium
pip install selenium
等待出现Successfully installed selenium
python3.7安装的时候默认安装了pip省心了不少,服务器端用的2.7还要自己撸
下载setuptools 和 pip
解压后进入目录,运行 python setup.py install
 
2、下载 chromedriver + chrome
下载地址:
chrome需要与对应版本号的chromedriver 相匹配的,版本号不匹配会报错
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
# driver = webdriver.Chrome()
当然也可以下载其他浏览器对应的驱动
# driver = webdriver.Firefox()
# driver = webdriver.Ie()
chromedriver.exe 放到python的安装目录下 或者Script目录下 应该是配置到path环境变量下的路径都可以
 
3、开撸一个简单的例子
#coding=utf-8
import time
from selenium import webdriver
import os
#打开浏览器
browser = webdriver.Chrome()
#请求连接
browser.get("http://baidu.com")
#获取页面元素 输入框
element = browser.find_element_by_id("kw")
#键入内容
element.send_keys("查询内容")
#获取页面元素 查询按钮
element= browser.find_element_by_id("su")
#触发元素点击事件
element.click()
#休眠5秒
time.sleep(5)
#关闭浏览器
browser.quit()
 
4、一些常用的操作
有需要还是查官方文档吧
 
1)执行JS
js = "aler('text')"
browser.execute_script(js)
2)窗口操作
  1. browser.maximize_window() # 全屏
  2. browser.minimize_window() #最小化
  3. print (browser.get_window_size()) #获取窗口大小
  4. browser.set_window_size(1280,800) # 设置分辨率 1280*800
  5. browser.close() #关闭当前串口
  6. browser.quit() #退出浏览器
3)元素定位
find_element_by_id() # document.getElementById()
find_element_by_name() #document.getElementsByName()
find_element_by_class_name() #document.getElementByclassName()
find_element_by_tag_name() #document.getElementsByTagName()
find_element_by_link_text() #文本链接定位
find_element_by_partial_link_text() #文本链接中部分文本进行定位 包含参数中的文本即可
find_element_by_xpath() #绝对路径定位
browser.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/form/div/div/div[2]/input")
从HTML标签开始描述出元素在dom树上的路径
也可以用"//标签[@属性名=属性值]" 例如:find_element_by_xpath(".//input[@id='kw']")
find_element_by_css_selector() #利用css选择器定位 类似JQuery
4)元素操作
clear 清除元素的内容,如果可以的话
send_keys 在元素上模拟按键输入
click 单击元素
submit 提交表单
browser.find_element_by_id("id").clear()
browser.find_element_by_id("id").send_keys("内容")
browser.find_element_by_id("id").click()
browser.find_element_by_id("id").submit ()
 
5、其他
服务器上执行时遇到错误提示
[22516:20196:0704/024642.979:ERROR:install_util.cc(597)] Unable to read registry value HKLM\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmentToken for writing result=2
解决方案如下:
在注册表里加一个值名称为MachineLevelUserCloudPolicyEnrollmen(数据为空)就可以了。
HKLM_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\MachineLevelUserCloudPolicyEnrollmen
 
Chrome正在受到自动软件的控制
option = webdriver.ChromeOptions()
option.add_argument(‘disable-infobars‘)
browser = webdriver.Chrome(chrome_options=option)
 
远程浏览器调用
远程浏览器调用无界面实现不会实际打开浏览器,运行速度很快
首先需要下载selenium-server ,地址:https://www.seleniumhq.org/download/
需要配置java环境
控制台输入:java -jar selenium-server-standalone.jar -port 9999 启动
webdriver.Remote(command_executor="[http://localhost:9999/wd/hub](http://localhost:4567/wd/hub "selenium 本地测试地址")", desired_capabilities=DesiredCapabilities.HTMLUNIT)

初探python+selenium的更多相关文章

  1. python+selenium 浏览器的问题

    以前用selenium调用firefox是不需要驱动的,最近安装了python3.52+最新的firefox 发现调不起来了 搜索以后发现Firefox 47+需要搞个firefox的驱动 gecko ...

  2. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  3. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  4. python+selenium+Robot

    准备工作: 1.下载python2.7 http://python.org/getit/ 2.下载下载setuptools [python 的基础包工具] 可以帮助我们轻松的下载,构建,安装,升级,卸 ...

  5. python+selenium运行报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    使用python+selenium运行自动化脚本时,打印某一段文字出现UnicodeEncodeError: 'ascii' codec can't encode characters in posi ...

  6. Functional testing - python, selenium and django

    Functional testing  - python selenium django - Source Code : from selenium import webdriverfrom sele ...

  7. python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  8. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...

  9. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

随机推荐

  1. Web自动化测试 Selenium+Eclipse+Junit+TestNG+Python

    Selenium+Eclipse+Junit+TestNG+Python 第三步 下载Selenium IDE.SeleniumRC.IEDriverServer.SeleniumClient Dri ...

  2. nokia 5220 XpressMusic 自己刷机

    看了半天各种论坛,是在不知道从哪里下手,所以自己写一篇自己刷机的新的.凤凰那个软件好像已经挂了,每次打开就是service is not authorized. 所以还是使用nokia自己的官方下载平 ...

  3. [D3] SVG Graphics Containers and Text Elements in D3 v4

    SVG is a great output format for data visualizations because of its scalability, but it comes with s ...

  4. [Vue] Load components when needed with Vue async components

    In large applications, dividing the application into smaller chunks is often times necessary. In thi ...

  5. Apache的.htaccess项目根文件夹伪静态设置规则

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  6. UVA 10970 - Big Chocolate 洪水@。@

    先横着切m-1刀,矩形巧克力就变成了1*n (有m个)然后每个都要切n-1下,所以有 m*(n-1) +(m-1)= n*m-1 #include<cstdio> int main() { ...

  7. Microsoft iSCSI Software Target 快照管理

    Microsoft iSCSI Software Target 支持快照管理,可以对设备进行手工创建快照.快照任务计划.快照回滚等操作. 首先配置iscsi 目标及设备映射关系,并在客户端通过发起程序 ...

  8. (转)Windows2008优化IIS7.5支持10万个同时请求的配置方法

    通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅. 在运行中cmd后,输入:C:\Window ...

  9. js和jquery实现页面滚动监听

    js和jquery实现页面滚动监听 一.总结 一句话总结:onscroll方法和监听页面元素的高度都可以实现滚动监听. 1.onscroll方法实现滚动监听的核心代码是什么? <body ons ...

  10. angular模块详解

    原文: https://www.jianshu.com/p/819421ff955a 大纲 1.angular应用是模块化的 2.对模块(Module)的认识 3.模块的分类:根模块和特性模块 4.N ...