webdriver高级应用- 改变一个页面对象的属性值
适用于一些无法操作的元素,可以直接改他的属性从而操作,代码如下:
#encoding=utf-8
from selenium import webdriver
import unittest
import time def addAttribute(driver, elementObj, attributeName, value):
# 封装向页面标签中添加新属性方法
# 调用JavaScript代码给页面标签添新属性,arguments[0]-[2]分别会用后面的
# element、attributeName和value参数值进行替换,并执行该JavaScript代码
# 添加新属性的JavaScript代码语法为:element.attributeName = value
# 比如input.name="test"
driver.execute_script("arguments[0].%s=arguments[1]" %attributeName,\
elementObj, value) def setAttribute(driver, elementObj, attributeName, value):
# 封装设置页面对象的属性值的方法
# 调用JavaScript代码修改页面元素的属性值,arguments[0]-[2]分别会用后面的
# element、attributeName和value参数值进行替换,并执行该JavaScript代码
driver.execute_script("arguments[0].setAttribute\
(arguments[1],arguments[2])", elementObj, attributeName, value) def getAttribute(elementObj, attributeName):
# 封装获取页面对象的属性值的方法
return elementObj.get_attribute(attributeName) def removeAttribute(driver, elementObj, attributeName):
# 封装删除页面元素属性的方法
# 调用JavaScript代码删除页面元素的指定的属性,arguments[0]-[1]分别会用后面的
# element、attributeName参数值进行替换,并执行该JavaScript代码
driver.execute_script("arguments[0].removeAttribute(arguments[1])",\
elementObj, attributeName) class TestDemo(unittest.TestCase): def setUp(self):
# 启动Chrome浏览器
#self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
self.driver = webdriver.Chrome(executable_path = "e:\\chromedriver")
#self.driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
def test_dataPicker(self):
url = "http://127.0.0.1/test_change_attr.html"
# 访问自定义网页
self.driver.get(url)
# 找到页面上标签名为input的页面元素
element = self.driver.find_element_by_xpath("//input") # 向页面文本框input标签中添加新属性name="search"
addAttribute(self.driver, element, 'name', "search")
# 添加新属性后,查看一下新添加的属性
print u'添加的新属性值%s="%s"' %("name", getAttribute(element, "name")) # 查看修改前文本框input标签的value属性值
print u"更改文本框中的内容前的内容:", getAttribute(element, "value")
# 更改input页面元素的value属性值为“这是更改后的文字内容”
setAttribute(self.driver, element, "value", u"xxxxxxx")
# 更改input页面元素的value属性值后,再次查看其value属性值
print u"更改文本框中内容后的内容:", getAttribute(element, "value")
time.sleep(3) # 查看修改前文本框input页面元素中的size属性值
print u"更改前文本框标签中的size属性值:", getAttribute(element, "size")
# 更改input页面元素的size属性值为“20”
setAttribute(self.driver, element, "size", 20)
# 更改input页面元素的size属性值后,再次查看其size属性值
print u"更改后文本框标签中的size属性值:", getAttribute(element, "size")
time.sleep(3) # 查看删除input页面元素value属性前value属性值
print u"文本框value属性值:", getAttribute(element, "value")
# 删除文本框的value属性
removeAttribute(self.driver, element, "value")
# 删除文本框的value属性后,再次查看value属性值
print u"删除value属性值后value属性值:", getAttribute(element, "value")
time.sleep(3) def tearDown(self):
# 退出IE浏览器
self.driver.quit() if __name__ == '__main__':
unittest.main()
webdriver高级应用- 改变一个页面对象的属性值的更多相关文章
- 如何遍历一个JSON对象的属性值???
当遇到一个JSON格式的对象时,不知道它有多少个属性,也不知道有什么属性,该如何遍历它的属性及其属性值呢??? 还是使用Java语言还是很像的,使用for语句. var obj = data[i]; ...
- Vue 改变数组中对象的属性不重新渲染View的解决方案
Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...
- vue修改对象的属性值后页面不重新渲染
原文地址:vue修改对象的属性值后页面不重新渲染 最近项目在使用vue,遇到几次修改了对象的属性后,页面并不重新渲染,场景如下: HTML页面如下: [html] view plain copy &l ...
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...
- 通过反射将一个java对象的属性值转换为一个Map
将一个java对象的属性值转换为一个Map: import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.P ...
- JQuery 操作对象的属性值
通过JQuery去操作前台对象(div,span...)的属性是很常见的事情,本文就简单的介绍几种操作情形. 1):通过属性值去获取对象 2):用JQuery去修改对象的属性值 3):获取并修改对象的 ...
- jquery attr()方法 添加,修改,获取对象的属性值。
jquery attr()方法 添加,修改,获取对象的属性值. jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到 ...
- WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)
WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...
- 获取JSON对象的属性值
1.问题背景 有一个json对象,其中有键值对,那怎样获取json对象中属性值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
随机推荐
- Android--View事件传递
Android--View事件传递 View事件传递首先要明白以下要素: 事件就是MotionEvent.该对象包含了传递的事件中的所有信息 事件的来源是Window(即PhoneWindow),包含 ...
- window之间、iframe之间的JS通信
一.Window之间JS通信 在开发项目过程中,由于要引入第三方在线编辑器,所以需要另外一个窗口(window),而且要求打开的window要与原来的窗口进行js通信,那么如何实现呢? 1.在原窗口创 ...
- windows系统下Eclipse启动界面更改
前段日子看到有人修改了linux系统下Eclipse的启动界面,因此自己试着修改了一下windows平台的启动界面.本文总结一下修改Eclipse 4.5(代号Mars)启动界面的方法. 方法一:修改 ...
- 如何变更站点 AD 域服务器IP地址
在 winserver 2012 单森林单域,多站点环境中,想把某一个站点AD 域服务器IP地址更改,要如何操作,才能保证客户端正常运行,不影响客户端的运行.有些朋友也经常提出类似问题. 想在不影响 ...
- python中的构造函数和构造函数和析构函数的作用
构造函数和构造函数和析构函数都属于python中的特殊方法 其中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳出其作用 ...
- userBean-作用范围session
package com.java1234.model; public class Student { private String name;private int age; public Strin ...
- HDU 2147 kiki's game kiki的游戏(博弈,找规律)
题意: 给一个有n*m 个格子的棋盘,将一个硬币放在右上角一格,每次可以往左/下/左下移动一格,碰到不能移动的局面者输. 思路: 找P/N状态.先将(n,1)归为P状态,那么能一步到达此位置的有3个位 ...
- JAVA图形界面常用知识点总会《代码分析》
1. package CLASS16.bin.com.GridLayout; import javax.swing.ImageIcon;import javax.swing.JFrame;import ...
- MyEclipse Update Progress Error解决方法
MyEclipse Update Progress Error现象:频繁弹出Update Progress(Time of error:……)窗口..log文件里 org.eclipse.swt.SW ...
- 八数码问题(一) 暴力BFS + STL
八数码问题是一个经典的人工智能问题.具体问题不累述了. 思路:由于存在多组测试数据,可以考虑“打表法“.所谓打表法,即枚举所有的初始情况,记录其到达终点的路径.而在这个题目中,顺序打表会调用很多次BF ...