selenium2 python范例

下面脚本的功能是:打开谷歌浏览器--》跳转到某个网址--》输入用户名和密码登录--》读取页面内的数据并求和。

 # coding=utf-8 #编码声明
import time
from selenium import webdriver # 跳转到首页
driver = webdriver.Chrome() # Optional argument, if not specified will search path.
driver.implicitly_wait(15)
driver.get('http://xxx.xxx.xxx') # 网址
# driver.maximize_window()
time.sleep(5) # Let the user actually see something!
loginButton1 = driver.find_element_by_id('login') # 通过id定位元素
loginButton1.click()
driver.find_element_by_id('username').send_keys('xxxxxx') # 用户名
driver.find_element_by_id('password').send_keys('yyyyyy') # 密码
time.sleep(5)
driver.find_element_by_xpath('//button[@type="submit"]').click() # 通过xpath定位元素
time.sleep(5) # Let the user actually see something! # 设置机构
driver.find_element_by_xpath("//*[@id='profile-messages']/a/b").click()
driver.find_element_by_xpath("//*[@id='profile-messages']/ul/li[3]/a").click()
time.sleep(5)
# 作品排行
driver.find_element_by_xpath("//*[@id='articles_Rank']/a").click()
# 全部媒体
driver.find_element_by_xpath("//*[@id='media_0']").click()
# 设置时间
driver.find_element_by_xpath("//*[@id='reservation']").click()
driver.find_element_by_xpath("//div[@class='calendar left']//th[@class='prev available']").click()
driver.find_element_by_xpath("//div[@class='calendar left']//td[@data-title='r0c6']").click() # 10月1号
driver.find_element_by_xpath("//div[@class='calendar right']//th[@class='prev available']").click()
driver.find_element_by_xpath("//div[@class='calendar right']//td[@data-title='r5c1']").click() # 10月31号
driver.find_element_by_xpath("//body/div[8]/div[1]/div/button[1]").click() # 读取目标并求值
time.sleep(1) # 加入延时,解决“click操作后立刻查找的元素使用element.text,报stale element错误”的问题
total = int(0)
elementList = driver.find_elements_by_xpath("//*[@id='articleContent']//td[5]")
for element in elementList:
text2 = element.text
value = int(text2)
total = total + value
hasNext = False
while 1:
buttonList = driver.find_elements_by_xpath("//*[@id='page']//a")
pageButton = buttonList[len(buttonList)-1]
if pageButton.text == "Next":
hasNext = True
driver.execute_script("arguments[0].scrollIntoView();", pageButton) # 执行js语句,通过滚动页面,将不在视野内的元素挪到视野内。
pageButton.click()
else:
hasNext = False
driver.quit()
break
if hasNext:
time.sleep(1)
elementList = driver.find_elements_by_xpath("//*[@id='articleContent']//td[5]")
for element in elementList:
text1 = element.text
value = int(text1)
total = total + value
print "value: " + str(value)
print "total: " + str(total) #
driver.quit()

selenium2 python范例的更多相关文章

  1. Selenium2+python自动化17-JS处理滚动条

    前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...

  2. Selenium2+python自动化23-富文本(自动发帖)

    前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...

  3. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  4. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  5. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  6. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  7. selenium2 python自动化测试实战(回归测试)

    selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...

  8. Selenium2+python自动化43-判断title(title_is)

    From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...

  9. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

随机推荐

  1. Object 转 String

    做项目中 : map 为Map<String,Object> a.setmoney(new BigDecimal((String)map.get("money"))); ...

  2. Stockbroker Grapevine(最短路)

      poj——1125 Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36112 ...

  3. FMDB使用SQLite事务Save Point

    FMDB使用SQLite事务Save Point   在SQLite中,事务提供了批量处理,批量撤销的功能.当批量操作中有一步无法完成操作,就会把执行过的语句都撤销,恢复到撤销前的状态.但是由于SQL ...

  4. java并发之hashmap

    在Java开发中经常会使用到hashmap,对于hashmap又了解多少,经常听到的一句话是hashmap是线程不安全的,那为什么是线程不安全的,如何才能保证线程安全,JDK又给我们提供了那些线程安全 ...

  5. 微信小程序提交 webapi FormDataCollection

    /// <returns></returns> [HttpPost] public ShoppingCartModel UpdateCart(FormDataCollectio ...

  6. DTrace Oracle Database

    http://d.hatena.ne.jp/yohei-a/20100515/1273954199 DTrace で Oracle Database のサーバー・プロセスをトレースしてみた Oracl ...

  7. Code Sign error: a valid provisioning profile matching the application's Identifier 'com. sensoSource.VoiceRecorder' could not be found

    如果不是com. sensoSource.VoiceRecorder,在xxx-info.plist里Bundle identifier里替换成你的证书名 xxx是你的工程名 在Bundle iden ...

  8. Shadow Map阴影贴图技术之探 【转】

    这两天勉勉强强把一个shadowmap的demo做出来了.参考资料多,苦头可不少.Shadow Map技术是目前与Shadow Volume技术并行的传统阴影渲染技术,而且在游戏领域可谓占很大优势.本 ...

  9. 5.4 heapq--堆队列算法

    本模块实现了堆队列算法,也叫作优先级队列算法.堆队列是一棵二叉树.而且拥有这样特点,它的父节点的值小于等于不论什么它的子节点的值,假设採用数组array实现,能够把它们的关系表示为:heap[k] & ...

  10. C++ sort函数用法

    参考文档:http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27 C++ sort函数用法 FROM:http://hi.baidu.com ...