selenium-webdriver循环点击百度搜索结果以及获取新页面的handler
webdriver还是很有意思的,之前用过Ruby的watir的自动化测试框架,感觉selenium的这套框架更好一些,很容易就可以上手。我虽然不做自动化这块,不过先玩玩再说,多学点东西总之还是好一些的。
# coding:utf-
import time
from selenium import webdriver
import unittest
from pythontest.commlib.baselib import * #引用封装后的日志系统
log = TestLog().getlog()
class BaiBu(unittest.TestCase):
u'''【百度.类】'''
def setUp(self):
self.browser = webdriver.Firefox()
self.browser.get("http://www.baidu.com")
self.browser.implicitly_wait()
#self.base = Screen(self.browser) def tearDown(self):
self.browser.quit() def test_search(self):
log.info("搜索前title:" + self.browser.title.encode("utf-8") ) #得到的title中文编码格式,非UTF-8格式,需要转码
#输入关键字,关键字任意
self.browser.find_element_by_class_name("s_ipt").send_keys(u"北京尚拓云测 软件测试外包公司")
self.browser.find_element_by_class_name("s_btn").submit() #此处class属性有三个值,中间使用空格隔开,取其中一值
#点击搜索结果
self.browser.find_element_by_xpath(".//*[@id='2']/h3/a").click() #根据xpath识别元素
time.sleep()
log.info("结果页:" + self.browser.title.encode("utf-8") ) #转码utf-
self.assertIn("软件测试",self.browser.title.encode("utf-8")) #断言,转码
time.sleep()
'''接下来的工作,是获取新页面的handler,以及循环点击搜索结果''' if __name__ == "__main__":
unittest.main()
明天有时间再优化,根据id进行随机数选取。可以参考我之前Ruby的一个自动化测试框架:http://www.cnblogs.com/zhuque/archive/2012/11/30/2796866.html

优化: 1、导入random模块,随机打开页面搜索结果;
2、获取新打开页面的页面句柄,并建立新结果页的断言
3、建立while循环,每次打开新页面前,重新获取原来结果页面的句柄
# coding:utf-
import time
from selenium import webdriver
import unittest
from pythontest.commlib.baselib import *
import random #引用封装后的日志系统
log = TestLog().getlog()
class BaiBu(unittest.TestCase):
u'''【百度.类】'''
def setUp(self):
self.browser = webdriver.Firefox()
self.browser.get("http://www.baidu.com")
self.browser.implicitly_wait()
#self.base = Screen(self.browser) def tearDown(self):
# self.browser.quit()
pass def test_search(self):
u'''接下来的工作,是获取新页面的handler,以及循环点击搜索结果'''
log.info("搜索前title:" + self.browser.title.encode("utf-8") ) #得到的title中文编码格式,非UTF-8格式,需要转码
#输入关键字,关键字任意
self.browser.find_element_by_class_name("s_ipt").send_keys(u"北京尚拓云测 软件测试外包公司")
self.browser.find_element_by_class_name("s_btn").submit() #此处class属性有三个值,中间使用空格隔开,取其中一值
i =
while i < : #打开两次搜索结果
randid = random.randint(,) #根据搜索结果页id属性,随机打开搜索结果
#点击搜索结果
self.browser.switch_to.window(self.browser.window_handles[]) #获取搜索结果页的页面句柄
print( ".//*[@id='%s']/h3/a"%(randid) ) #对print()进行格式化输出,%(randid)
self.browser.find_element_by_xpath( ".//*[@id='%s']/h3/a"%(randid) ).click() #根据xpath识别元素
time.sleep()
self.browser.switch_to.window(self.browser.window_handles[-]) #获取新打开结果页的页面句柄
log.info("结果页:" + self.browser.title.encode("utf-8") ) #转码utf-
self.assertIn("尚拓云测",self.browser.title.encode("utf-8")) #断言,转码
i = i +
time.sleep() if __name__ == "__main__":
unittest.main()
测试结果如下:

selenium-webdriver循环点击百度搜索结果以及获取新页面的handler的更多相关文章
- selenium 之百度搜索,结果列表翻页查询
selenium之百度搜索,结果列表翻页查询 by:授客 QQ:1033553122 实例:百度搜索,结果列表翻页查询 解决问题:解决selenium driver获取web页面元素时,元素过期问题 ...
- selenium,webdriver模仿浏览器访问百度 基础2
学python理念 : 代码要多敲 一定要多敲 哪怕很基础 注释要清晰 由于基础1有一些注释写的很详细, 在这里有些注释没有写的很详细 可以配合基础1一起学习哦 from selenium im ...
- python + selenium登陆并点击百度平台
from PIL import Imagefrom selenium.webdriver import DesiredCapabilitiesfrom selenium import webdrive ...
- selenium,webdriver模仿浏览器访问百度 基础1
这是一种比较好的反反爬技术 #安装:pip install selenium=2.48.0 #显示:pip show selenium #卸载:pip uninstall selenium #模拟用户 ...
- 转载 基于Selenium WebDriver的Web应用自动化测试
转载原地址: https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中, ...
- python--selenium简单模拟百度搜索点击器
python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...
- C#+Selenium抓取百度搜索结果前100网址
需求 爬取百度搜索某个关键字对应的前一百个网址. 实现方式 VS2017 + Chrome .NET Framework + C# + Selenium(浏览器自动化测试框架) 环境准备 创建控制台应 ...
- (java)selenium webdriver学习--通过id、name定位,输入内容,搜索,关闭操作、通过tagname查找元素
selenium webdriver学习--通过id.name定位,输入内容,搜索,关闭操作:通过tagname查找元素 打开谷歌浏览器,输入不同的网站,搜索框的定位含有不同元素(有时为id,有时为n ...
- 使用python和selenium写一个百度搜索的case
今天练习的内容主要写了一个小功能,在百度上搜索某词汇,然后实现web上的back功能 代码如下: import unittest from selenium import webdriver from ...
随机推荐
- C#需要在项目程序生成前后执行相关的事件
分享4: 需求:需要在项目程序生成前后执行相关的事件,比如:需要将某个文件拷贝到bin\Debug中,或者创建某文件夹等. 分析:我们可利用项目属性(选择项目右键,选择属性)中的“生成事件”预定义相关 ...
- Bool的转录功能
Bool的转录功能 and 当and前边的条件成立时,才执行后边的条件.当前边的条件不成立时,后边的条件一定执行. 特性实用: 不使用if.while写一个具有判断功能的代码. def fun(): ...
- 目录树生成工具treer
安装方法 $ npm install treer -g 生成结构 $ treer Desktop├─.DS_Store├─.localized├─dir2 | ├─file3 | └file4├─di ...
- 【调试工具】tcpdump
[tcpdump]https://linux.cn/article-10191-1.html
- ABP中的Filter(下)
接着上面的一个部分来叙述,这一篇我们来重点看ABP中的AbpUowActionFilter.AbpExceptionFilter.AbpResultFilter这三个部分也是按照之前的思路来一个个介绍 ...
- json打不开
- 自动化测试(web测试selenium框架)
什么是selenium? 一个用于Web应用程序测试的工具直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safa ...
- javaWeb2之Jsp
Java Server Page 放在除WEB-INF(放web项目的隐私文件)外的其他任何目录中. Java服务器端网页,实现在HTML页面编写Java代码实现动态内容,一种简化Servlet编写的 ...
- 【THUSC2017】【LOJ2981】如果奇迹有颜色 DP BM 打表 线性递推
题目大意 有一个 \(n\) 个点的环,你要用 \(m\) 中颜色染这 \(n\) 个点. 要求连续 \(m\) 个点的颜色不能是 $1 \sim m $ 的排列. 两种环相同当且仅当这两个环可以在旋 ...
- audio与video控件/标签的隐藏,iso/Android下自动全屏播放,短暂黑屏问题
(一)audio音频标签 <audio src="xxx.mp3"></audio> (二)video视频标签 <video src="xx ...