现在社交新闻都有哪些。比如微博社交功能、uc等

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(7001)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'selenium+python自动化测试环境搭建',
blogAbstract:'\r\n搭建平台:windows\r\n1.安装python,下载地址:'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
Docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将Docker与Selenium结合实现在容器中执行无界面的自动化操作。例如:自动测试、自动下载邮件等。
需求说明通过Selenium自动的登录邮箱,下载邮箱中符合条件的邮件,并对邮件的内容进行解析存档。
方案选择Selenium官方提供了基于selenium hub的方式来管理Selenium的node节点,提供了分布式的远程调度方案,可以为SeleniumGrid添加各种类型的WebDriver。
基于Selenium Grid的方案适用于以下场景:
通过Selenium自动访问网页时,需要阻塞等待与用户的交互,例如需要输入短信验证码的场景,通过Selenium Grid的调度,可以最优的利用所有可访问的资源,提高系统的并发执行效率。需要对网页的兼容性进行测试时,可以接入多种内核的WebDriver到Selenium Grid中,这样在进行网页的自动化测试时,也同时对浏览器的兼容性进行了测试。访问只支持IE内核的网站时,例如一些开发比较早的政府网站等。访问需要安装安全控件的网站,例如网银的登录等。
本次的需求对时效性要求不高,邮件的获取需要由定时器进行触发,如果使用Selenium Grid,可能会增加了整个系统的复杂程度,分布式系统中每引入一个中间件,就会增加系统的复杂性,系统的可用性就会随之降低。
基于以上分析,考虑采用selenium handless的模式,在Docker中运行Chrome的WebDriver,完成最终邮件的自动获取。
在确定方案之后,需要寻找合适的Docker镜像,最终找到了chromium-xvfb这个镜像文件,集成了Chromium和Xvfb,可以满足在Docker容器中通过Selenium来进行无界面的操作。
方案验证1.下载chromium-xvfb的镜像文件
[root@prod&~]#&docker&pull&markadams/chromium-xvfb-py2
2.交互模式运行
[root@prod&~]#&docker&run&--rm&-it&markadams/chromium-xvfb-py2&bash
3.进入python环境
root@aa:/usr/src/app#&python
4.输入以下python代码
from&selenium&import&webdriver
driver&=&webdriver.Chrome()
url&=&'/mark-adams/docker-chromium-xvfb/blob/master/samples/
python3/test_google.py'
driver.get(url)
没有错误输出,证明Chrome已经在Docker下可以正常工作。
方案实施以markadams/chromium-xvfb-py2作为基础镜像,重新编写的Dockerfile如下:
FROM&markadams/chromium-xvfb-py2
WORKDIR&/opt/zs5s/download-mail
COPY&./download-mail/.pip&/root/.pip/
COPY&./download-mail/requirements.txt&/opt/zs5s/download-mail/requirements.txt
RUN&pip&install&--upgrade&pip
RUN&pip&install&-r&requirements.txt&&&&mkdir&/tmp/downloaded_files
ENV&DISPLAY&:1
COPY&./download-mail&/opt/zs5s/download-mail
COPY&./data_service&/opt/zs5s/data_service
COPY&./save_mail&/opt/zs5s/save_mail
COPY&./common/&/opt/zs5s/common
在编译运行后,发现在这个Docker容器内单纯的去访问网页没有问题,如果去执行带有键盘的操作时,会报错,错误信息如下:
raise&exception_class(message,&screen,&stacktrace)
mon.exceptions.WebDriverException:&Message:&unknown&error:&an&X&display&is&required&for&keycode&conversions,&consider&using&Xvfb
(Session&info:&chrome=57.0.2987.98)
(Driver&info:&chromedriver=2.28.faeec9b9aeeea1f),platform=Linux&4.4.27-moby&x86_64)
经过调查是需要在启动容器时执行Xvfb,申请一块Screen,具体可以参考链接1。在Dockerfile中加入启动脚本:
CMD&sh&start.sh
start.sh的内容如下:
!/bin/shexport&DISPLAY=:1&&&&
Xvfb&$DISPLAY&-ac&-screen&0&&&
sleep&1&&&&
ps&-aux&&&&
tail&-f&start.sh&#测试用,为了阻塞住容器内的进程
结果验证在新生成的容器内执行以下的Python脚本,可以正常执行,说明在Chrome中已经可以接收通过Selenium传入的键盘事件。
from&splinter&import&Browser
from&selenium&import&webdriver
from&mon.keys&import&Keys
url&=&'/mark-adams/docker-chromium-xvfb/blob/master/samples/python3/test_google.py'
browser&=&Browser('chrome')
browser.visit(url)
element&=&browser.find_by_xpath('/html/body/div[1]/header/div/div/div/div/form/label/input[1]')
element.type('aaaa')
残留问题在Python退出Selenium时,虽然执行了driver.quit()函数,但是实际上Chrome并没有真正的退出,似乎是Selenium的一个Bug,在3.1中提到了修正,但是好像没有起作用。
解决办法可以考虑执行shell脚本主动的kill掉Chrome的进程。
要回复文章请先或
IT老兵,互联网新兵!& & & & 前两篇文章介绍了安装,此篇文章算是一个简单的进阶应用吧!它是在Windows下通过Selenium+Python实现自动访问Firefox和Chrome并实现搜索截图的功能。 & & & &&[Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上) & & & &&[Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium
自动访问Firefox
& & & & 可以参照前文安装Selenium环境,目前Selenium这个用于Web应用程序测试的工具支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite、Chrome等。但是由于Firefox是默认安装路径,webdriver可以正常访问它,而Chrome和IE需要设置driver路径。
from selenium import webdriver
from mon.keys import Keys
import sys
reload(sys)
sys.setdefaultencoding('gb18030')
driver = webdriver.Firefox()
driver.get(&&)
assert &百度& in driver.title
elem = driver.find_element_by_name(&wd&)
elem.send_keys(&Eastmount&)
elem.send_keys(Keys.RETURN)
assert &谷歌& in driver.title
driver.save_screenshot('baidu.png')
driver.close()
driver.quit() & & & & 运行效果如下图所示,自动调用Firefox浏览器搜索,同时输出断言错误:
& & & & assert &谷歌& in driver.title&AssertionError
& & & & 官方文档地址:
from selenium import webdriver & & & &from mon.keys import Keys & & & &import sys
& & & & 首先导入Selenium.webdriver模板,它提供了webdriver的实现方法,目前支持这些方法的有Firefox、Chrome、IE和Remote。同时导入Keys类,它提供了操作键盘的快捷键,如RETURE、F1、ALT等。最后导入sys主要是设置编码方式。
reload(sys) & & & &sys.setdefaultencoding('gb18030')&
& & & & 由于汉语中可能会遇到错误:
& & & &&UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33
& & & &&UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 35
& & & & 所以此处转换成gb编码,该篇不重点介绍了。
driver = webdriver.Firefox() & & & &driver.get(&&)
& & & & 创建Firefoxwebdriver实例。其中Firefox最简单,其他Chrome还需要driver和配置路径。接下来通过driver.get()打开百度URL网页,webdriver会等待网页元素加载完成之后才把控制权交回脚本。但是,如果要打开了页面在加载的过程中包含了很多AJAX,webdriver可能无法准确判断页面何时加载完成。
assert &百度& in driver.title & & & &assert &谷歌& in driver.title
& & & & &接下来使用断言判断文章的标题Title是否包含“百度”和“谷歌”。对应的标题是“百度一下,你就知道”,所以其中“百度”包括,而“谷歌”会出现断言报错。
& & & & 同时提交页面并获得返回结果,为了判断结果是否成功返回也可以使用断言。
elem = driver.find_element_by_name(&wd&) & & & & webdriver提供了很多如find_element_by_*的方法来匹配要查找的元素。如利用name属性查找方法find_element_by_name来定位输入框,审查元素name=wd。
& & & & 元素定位方法可以参考官网:
elem.send_keys(&Eastmount&)
elem.send_keys(Keys.RETURN)
& & & & send_keys方法可以用来模拟键盘操作,相当于是在搜索框中输入“Eastmount”再按回车键搜索。但首先要从mon.keys导入Keys类。
driver.save_screenshot('baidu.png')
driver.close()
driver.quit()
& & & & 最后是调用save_screenshot进行截图,但是图片是过程中的,怎样获取最后加载的图片呢?同时,操作完成并关闭浏览器。当然,也可以调用quit()方法,两者的区别在于:quit()方法会退出浏览器,而close()方法只是关闭页面,但如果只有一个页面被打开,close()方法同样会退出浏览器。
自动访问Chrome
& & & & 首先下载
并置于Chrome安装目录。可能会遇到错误:
& & & &&WebDriverException: Message: 'chromedriver' executable needs to be in PATH.参考官网解决方法:
,我采用的是设置driver环境。
& & & & 代码如下:
from selenium import webdriver
from mon.keys import Keys
chromedriver = &C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe&
os.environ[&webdriver.chrome.driver&] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get(&http://www.python.org&)
assert &Python& in driver.title
elem = driver.find_element_by_name(&q&)
elem.send_keys(&selenium&)
elem.send_keys(Keys.RETURN)
assert &Google& in driver.title
driver.close()
driver.quit() & & & & 需要放置chromedriver如下路径,同时可以通过代码设置。但是由于我的Chrome可能Bug一直未修复,总是打开错误。
driver = webdriver.Chrome(executable_path=&G:\chromedriver.exe&)
参考资料:
& & & &&用python玩转selenium:2-入门实例及分析 -&Reiki
& & & &&构建Python+Selenium2自动化测试环境&二&:IE、Chrome和Firefox运行
& & & &&RobotFramework+seleniumlibrary Web自动化测试 (三)
最后希望该篇基础性文章对你有所帮助吧!如果有不足之处,还请海涵~ & & & (By:Eastmount
下午4点 &&)
版权声明:本文为博主原创文章,未经博主允许不得转载。Automation
阅读(3628)
  最近公司在给我们培训,主要是网页自动化测试的,现在的工作每天都是测APP,刚刚入门,不过,当我看了别人写的bug之后,就觉得不会觉得能够发现bug多么多么的厉害了。
  前两周的时间一直在搭建自动化测试的环境,由于白天上班没有时间做练习,只能下班之后才有时间自己学习一下,苦逼啊。每天都是9点多才从公司回宿舍,但说实在的,这样的日子确实过得很充实,不管怎样,这么好的一个工作环境一定要好好珍惜,学多点东西,挣多点钱回家孝敬一下老爸,他自己一个人扛起我们整个家庭,也确实不容易的。好了,废话不多说了,直接进入主题吧。
  1&JDK、Python环境变量配置 & &
  &下载JDK&,直接双击安装,建议直接点&下一步&,选择默认路径安装。安装好JDK之后,就配置JDK的环境变量。
  右击&我的电脑&&&属性&&高级&&环境变量
  新增系统变量:变量JAVA_HOME&&&&& 值C:\Program Files\Java\jdk1.6.0_24,你要根据你自己的安装路径来选这个值
  变量CLASSPATH&&&& 值 .;%JAVA_HOME%\lib\dt.%JAVA_HOME%\lib\tools.jar &记住前面有个. & 代表当前路径
  编辑变量Path&&&& 添加 %JAVA_HOME%\%JAVA_HOME%\jre\bin
  &经过这些步骤之后,JDK环境变量就配置成功了。如何测试是否成功?答案如下:在cmd命令窗口分别敲入 java 、javac如果都提示帮助信息则表示配置成功,如果提示命令不存在则表示配置不成功。
  以下是图文介绍如下图:
& & & & & & &&& & & & &&
  配置classpath变量,记得前面有个. & & & & & & && &
  把上面配的JAVA_HOME和classpath追加到path中 & &&& & & &
  2 &下载Eclipse
  官网下载地址:。
  下载完成之后,直接双击即可运行。首次运行的时候,会出现一个欢迎界面,并提示你选择workspace的存储路径。这个路径可以根据自己的情况设置,建议这个路径不要含有中文字符,否则以后的项目在运行过程中有可能会出错。
  3 &下载Python安装。
  Python2 和Python3有点不同,我这里下载的是Python2.7.2这个版本。下载地址:根据自己电脑的位数选择32bit或者64bit的安装包
下载好Python的安装包之后,直接双击即可完成安装,建议选择默认安装,直接点&下一步&即可。安装好了Python之后,就配置Python的环境变量。
  其实配置Python的环境变量比配置JDK的环境变量更简单,我们只需要把Python的安装路径追加到Path系统变量中就好了,如下图:
  4 &&将Eclipse和Python整合到一起
  在Eclipse的菜单栏中,单击Help--& Eclipse Marketplace&,在弹出的窗口中,会有一个搜索框,在里面输入Pydev,这个主要是用来搜索Pydev的,搜索到之后,就单击Install。Install之后就restart Eclipse,然后在Eclipse菜单中,选择windows--&preferenc--&PyDev---&Interpreters---&Python Interpreter,如下图:
  配置完成后如图:
  5 &&下载selenium
  官网下载地址:
  Selenium主要包含三个部分:Selenium IDE、Selenium Server、Selenium Client Drivers。我们需要把这三个部分都下载下来安装。
  首先下载的是Selenium IDE。Selenium IDE是一个火狐插件,可以录制脚本,同时可将脚本转换成不同脚本语言的脚本。Selenium IDE下载下来之后,打开火狐浏览器,然后把Selenium IDE这个压缩包拖到火狐浏览器中,火狐浏览器自动提示安装,选择默认安装即可。
  Selenium Server是Selenium的核心部分,它是用 JavaScript 编写的,这使得测试脚本可以在受支持的浏览器中运行。下载下来的Selenium Server文件是jar包,安装方法是,打开CMD,去到Selenium Server的路径下,直接输入: java -jar selenium-server-2.41.0.jar 即可完成安装。
  Selenium Client Drivers 由于我用的是Java语言因此我选择下载的包是Java版的,如图:
  6 &&安装setuptools-0.6c11
  Setuptools是python安装第三方库比较方便的工具,支持在线安装。我们先把setuptools-0.6c11下载下来,下载地址:。你自己根据自己的电脑是32位还是64位的进行下载安装。
  7 &&安装 pip
  pip支持在线安装。我们打开cmd,直接输入cd c:\Python27\Scripts回车,然后再输入easy_install.exe pip,即可在线下载安装。
  8 &&安装第三方包
  其实上面两个步骤主要是为这里铺垫的,有了上面两步,我们就可以轻松的安装第三方包了。
  第三方包有:
  selenium
  xlwt(97版excel的写入)
  xlrd(97版excel的读取)
  xlutils(修改现有97版excel文档)
  mysql(MySQL-python,支持对mysql里数据的查询和写入)
  openpyxl(.xls和.xlsx都支持,但如果文档包含一些特殊公式,可能会失败)
  yaml(PyYAML)
  安装方法也很简单:
  打开CMD,
  输入cd c:\Python27\Scripts
  pip install xlwt,
  以此类推,把上面列的7个包都安装完去。如果有些包不能在线安装,你就直接去到官网去把他们下载下来,然后用CMD的方式安装。
  9 &&Driver的安装及下载
  需要安装的driver有Google和IE的,他们分别是:
  chromdirver: 下载地址http://chromedriver./index.html
  iedriver:&&&& 下载地址http://selenium-release./index.html
  他们主要是用来驱动打开网页的。下载下来之后,把这2个exe文件放到python的安装目录下,如:c:\Python27。
  10 & 见证奇迹的时刻到了
  把上面的都做好之后,就可以写我们的第一个程序了。这个程序的主要功能就是:打开一个谷歌浏览器,然后,在输入框输入beyond(我比较喜欢的乐队),完成网页的自动化。
  程序源代码如下:
# -*- coding: utf-8 -*- 这个主要是设置编码方式
Created on
@author: Administrator
#!/usr/bin/python
from selenium import webdriver
mon.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
import time
# 实例化一个驱动类
driver = webdriver.Chrome()
# 打开谷歌浏览器
driver.get("")
# 通过q这个属性来找元素 (谷歌搜索框)
inputElement = driver.find_element_by_name("q")
# 在搜索框中输入beyond,题外话,beyond是我比较喜欢的乐队,我很喜欢吉他的,正在学呢
inputElement.send_keys("beyond")
# 提交搜索信息
inputElement.submit()
print driver.title
WebDriverWait(driver, 10).until(lambda driver : driver.title.lower().startswith("beyond"))
print driver.title
#==================================
  如果你看到谷歌浏览器自动打开了,那么,你已经迈出了自动化的第一步了。
  第一篇技术博文终于写完了,可以去睡觉了,明天继续上班去.....
& 世界晚安。。。原文链接:
阅读排行榜

我要回帖

更多关于 微博社交网络 的文章

 

随机推荐