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的更多相关文章

  1. selenium 之百度搜索,结果列表翻页查询

    selenium之百度搜索,结果列表翻页查询 by:授客 QQ:1033553122 实例:百度搜索,结果列表翻页查询 解决问题:解决selenium driver获取web页面元素时,元素过期问题 ...

  2. selenium,webdriver模仿浏览器访问百度 基础2

    学python理念  :  代码要多敲 一定要多敲 哪怕很基础  注释要清晰 由于基础1有一些注释写的很详细, 在这里有些注释没有写的很详细 可以配合基础1一起学习哦 from selenium im ...

  3. python + selenium登陆并点击百度平台

    from PIL import Imagefrom selenium.webdriver import DesiredCapabilitiesfrom selenium import webdrive ...

  4. selenium,webdriver模仿浏览器访问百度 基础1

    这是一种比较好的反反爬技术 #安装:pip install selenium=2.48.0 #显示:pip show selenium #卸载:pip uninstall selenium #模拟用户 ...

  5. 转载 基于Selenium WebDriver的Web应用自动化测试

    转载原地址:  https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中, ...

  6. python--selenium简单模拟百度搜索点击器

    python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...

  7. C#+Selenium抓取百度搜索结果前100网址

    需求 爬取百度搜索某个关键字对应的前一百个网址. 实现方式 VS2017 + Chrome .NET Framework + C# + Selenium(浏览器自动化测试框架) 环境准备 创建控制台应 ...

  8. (java)selenium webdriver学习--通过id、name定位,输入内容,搜索,关闭操作、通过tagname查找元素

    selenium webdriver学习--通过id.name定位,输入内容,搜索,关闭操作:通过tagname查找元素 打开谷歌浏览器,输入不同的网站,搜索框的定位含有不同元素(有时为id,有时为n ...

  9. 使用python和selenium写一个百度搜索的case

    今天练习的内容主要写了一个小功能,在百度上搜索某词汇,然后实现web上的back功能 代码如下: import unittest from selenium import webdriver from ...

随机推荐

  1. H5活动页开发有关

    活动页开发流程 针对各种节日各种活动,临时定稿开发的活动页,往往时间安排都比较急 ---- 产品定下需求方向 UI实现设计稿 1. 草图和交互逻辑定稿=>多少个页面,每个页面表达的含义以及和用户 ...

  2. python中使用redis发布订阅者模型

    redis发布订阅者模型: Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel.发布者和订阅者都是Redis客户端,Channel则 ...

  3. Django ORM多表操作

    多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对 ...

  4. IIS7下设置https主机名灰色无法修改

    打开iis绑定域名时,点击绑定弹出绑定框,在选择类型为“https”的时候,主机名为灰色的无法填写 解决方法: 1. 选择https,在选择相应的SSL证书,点击确定 2. 打开C:\Windows\ ...

  5. java UTC时间格式化

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import ja ...

  6. 数据分析三剑客之Matplotlib

    Matplotlib绘图和可视化 简介 我的前面两篇文章介绍了 Nimpy ,Pandas .今天来介绍一下Matplotlib. 简单来说,Matplotlib 是 Python 的一个绘图库.它包 ...

  7. 「译」图解 ArrayBuffers 和 SharedArrayBuffers

    作者:Lin Clark 译者:Cody Chan 原帖链接:A cartoon intro to ArrayBuffers and SharedArrayBuffers 这是图解 SharedArr ...

  8. jq的on click 事件在苹果下无效

    据说苹果对于点击的对象,拥有cursor:pointer这个样式的设置才算 参考地址:https://blog.csdn.net/yuexiage1/article/details/51612496

  9. Javascript介绍(了解)

    Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) JavaScript的历史 1992 ...

  10. 程序人生 | 35岁以上的 iOS 程序员都到哪里去了?

    1.网上流传华为公司正在清理 34 岁以上的员工. " 中国区开始集中清理 34 + 的交付员工,...... 去向是跟海外服务部门交换今年新毕业的校招员工,也就是进新人,出旧人. 这些旧人 ...