webdriver高级应用-使用JavaScript操作页面元素
Webdriver搞不定的,需要用js,无需引入有关js的包就可用
在WebDriver脚本代码中执行JavaScript代码,来实现对页面元素的操作。此方法主要用于解决在某些情况下,页面元素的.click()方法无法生效等问题。
- #encoding=utf-8
- from selenium import webdriver
- from selenium.common.exceptions import WebDriverException
- import unittest
- import traceback
- import time
- class TestDemo(unittest.TestCase):
- def setUp(self):
- # 启动Chrome浏览器
- #self.driver = webdriver.Chrome(executable_path = "c:\\chromedriver")
- self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
- def test_executeScript(self):
- url = "http://www.sogou.com"
- # 访问baidu首页
- self.driver.get(url)
- # 构造JavaScript查找百度首页的搜索输入框的代码字符串
- searchInputBoxJS = "document.getElementById('query').value='光荣之路';"
- # 构造JavaScript查找百度首页的搜索按钮的代码字符串
- searchButtonJS = "document.getElementById('stb').click()"
- try:
- # 通过JavaScript代码在百度首页搜索输入框中输入“光荣之路”
- self.driver.execute_script(searchInputBoxJS)
- time.sleep(2)
- # 通过JavaScript代码点击百度首页上的搜索按钮
- self.driver.execute_script(searchButtonJS)
- time.sleep(2)
- self.assertTrue(u"光荣之路" in self.driver.page_source)
- except WebDriverException, e:
- # 当定位失败时,会抛出WebDriverException异常
- print u"在页面中没有找到要操作的页面元素 ",traceback.print_exc()
- except AssertionError, e:
- print u"页面不存在断言的关键字串"
- except Exception, e:
- # 发生其他异常时,打印异常堆栈信息
- print traceback.print_exc()
- def tearDown(self):
- # 退出IE浏览器
- self.driver.quit()
- if __name__ == '__main__':
- unittest.main()
解释:
>>> try:
... 1/0
... except:
... print "error"
...
error
>>> import traceback
>>> try:
... 1/0
... except:
... traceback.print_exc()
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero
#Traceback可以打印出出错的具体错误信息和位置
webdriver高级应用-使用JavaScript操作页面元素的更多相关文章
- Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素
学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...
- 使用javaScript操作页面元素
from selenium import webdriver import time import unittest from selenium.common.exceptions import We ...
- 常用JavaScript操作页面元素的方法
1.取得dropdownlist的选中值 var ddl =document.getElementById('<%=ddlusers.ClientID%>'); var index = d ...
- Selenium with Python 005 - 调用js操作页面元素
WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...
- 用javaScript获取页面元素值
用JavaScript获取页面元素常见的三种方法: getElementById() ...
- [Selenium] 操作页面元素等待时间
WebDriver 在操作页面元素等待时间时,提供2种等待方式:一个为显式等待,一个为隐式等待,其区别在于: 1)显式等待:明确地告诉 WebDriver 按照特定的条件进行等待,条件未达到就一直等待 ...
- Java&Selenium调用JS实现高亮被操作页面元素高亮
Java&Selenium调用JS实现高亮被操作页面元素高亮 /* * the method of invoking js to do something * * @author daviey ...
- 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变
查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...
- 使用 jQuery 操作页面元素的方法,实现浏览大图片的效果,在页面上插入一幅小图片,当鼠标悬停到小图片上时,在小图片的右侧出现与之相对应的大图片
查看本章节 查看作业目录 需求说明: 使用 jQuery 操作页面元素的方法,实现浏览大图片的效果,在页面上插入一幅小图片,当鼠标悬停到小图片上时,在小图片的右侧出现与之相对应的大图片 实现思路: 在 ...
随机推荐
- springmvc学习经验
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring ...
- Android Error:Could not run build action using Gradle installation
错误内容: Error:Could not run build action using Gradle installation ‘D:\AndroidStudio\AS2.x\gradle\grad ...
- JavaScript_8_比较,条件语句
1. 比较运算符 ==(值相等,类型可以不等), ===(值和类型必须都相等), !=, >, <, >=, <= 2. 逻辑运算符 &&.||.! 3. 条件 ...
- Android(java)学习笔记109:Java中输入和输出流概念
程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,当然是输入流了, 反之,把内存中的数据写到磁盘上的文件里面去就是输出.通常都是这样的,用了过滤流的情况复杂一些,则另当别论.
- 厌食?暴食?试试这个 VR 新疗法
今日导读 “我知道我要吃饭,但我真的什么都吃不下.” “我脑子里想的只有吃东西,吃吃吃!” ....... 作为一个正常人,我们完全无法想象患厌食症或贪食症人群所受的痛苦.长期的厌食,会使一个人瘦的只 ...
- MAC OSXU盘会挂载目录
当U盘接到系统后,你可以在Terminal里输入df -lh.这时,硬盘的使用和分区情况会输出,你在Mounted on 这一列数据中可以找到你的U盘或新添加的硬盘的挂载路径.
- 已知一棵完全二叉树,求其节点的个数 要求:时间复杂度低于O(N),N为这棵树的节点个数
package my_basic.class_4; public class Code_08_CBTNode { // 完全二叉树的节点个数 复杂度低于O(N) public static class ...
- PAT (Basic Level) Practise (中文)- 1015. 德才论 (25)
http://www.patest.cn/contests/pat-b-practise/1015 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡 ...
- c++作业:求N的阶乘。
N的阶乘就是n.(n-1)! 5的阶乘是什么?5*4*3*2*1 #include <iostream> using namespace std; int jiecheng(int num ...
- C++中有三种创建对象的方法
#include <iostream> using namespace std; class A { private: int n; public: A(int m):n(m) { } ~ ...