适用于一些无法操作的元素,可以直接改他的属性从而操作,代码如下:

  1. #encoding=utf-8
  2. from selenium import webdriver
  3. import unittest
  4. import time
  5.  
  6. def addAttribute(driver, elementObj, attributeName, value):
  7. # 封装向页面标签中添加新属性方法
  8. # 调用JavaScript代码给页面标签添新属性,arguments[0]-[2]分别会用后面的
  9. # element、attributeName和value参数值进行替换,并执行该JavaScript代码
  10. # 添加新属性的JavaScript代码语法为:element.attributeName = value
  11. # 比如input.name="test"
  12. driver.execute_script("arguments[0].%s=arguments[1]" %attributeName,\
  13. elementObj, value)
  14.  
  15. def setAttribute(driver, elementObj, attributeName, value):
  16. # 封装设置页面对象的属性值的方法
  17. # 调用JavaScript代码修改页面元素的属性值,arguments[0]-[2]分别会用后面的
  18. # element、attributeName和value参数值进行替换,并执行该JavaScript代码
  19. driver.execute_script("arguments[0].setAttribute\
  20. (arguments[1],arguments[2])", elementObj, attributeName, value)
  21.  
  22. def getAttribute(elementObj, attributeName):
  23. # 封装获取页面对象的属性值的方法
  24. return elementObj.get_attribute(attributeName)
  25.  
  26. def removeAttribute(driver, elementObj, attributeName):
  27. # 封装删除页面元素属性的方法
  28. # 调用JavaScript代码删除页面元素的指定的属性,arguments[0]-[1]分别会用后面的
  29. # element、attributeName参数值进行替换,并执行该JavaScript代码
  30. driver.execute_script("arguments[0].removeAttribute(arguments[1])",\
  31. elementObj, attributeName)
  32.  
  33. class TestDemo(unittest.TestCase):
  34.  
  35. def setUp(self):
  36. # 启动Chrome浏览器
  37. #self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
  38. self.driver = webdriver.Chrome(executable_path = "e:\\chromedriver")
  39. #self.driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
  40. def test_dataPicker(self):
  41. url = "http://127.0.0.1/test_change_attr.html"
  42. # 访问自定义网页
  43. self.driver.get(url)
  44. # 找到页面上标签名为input的页面元素
  45. element = self.driver.find_element_by_xpath("//input")
  46.  
  47. # 向页面文本框input标签中添加新属性name="search"
  48. addAttribute(self.driver, element, 'name', "search")
  49. # 添加新属性后,查看一下新添加的属性
  50. print u'添加的新属性值%s="%s"' %("name", getAttribute(element, "name"))
  51.  
  52. # 查看修改前文本框input标签的value属性值
  53. print u"更改文本框中的内容前的内容:", getAttribute(element, "value")
  54. # 更改input页面元素的value属性值为“这是更改后的文字内容”
  55. setAttribute(self.driver, element, "value", u"xxxxxxx")
  56. # 更改input页面元素的value属性值后,再次查看其value属性值
  57. print u"更改文本框中内容后的内容:", getAttribute(element, "value")
  58. time.sleep(3)
  59.  
  60. # 查看修改前文本框input页面元素中的size属性值
  61. print u"更改前文本框标签中的size属性值:", getAttribute(element, "size")
  62. # 更改input页面元素的size属性值为“20”
  63. setAttribute(self.driver, element, "size", 20)
  64. # 更改input页面元素的size属性值后,再次查看其size属性值
  65. print u"更改后文本框标签中的size属性值:", getAttribute(element, "size")
  66. time.sleep(3)
  67.  
  68. # 查看删除input页面元素value属性前value属性值
  69. print u"文本框value属性值:", getAttribute(element, "value")
  70. # 删除文本框的value属性
  71. removeAttribute(self.driver, element, "value")
  72. # 删除文本框的value属性后,再次查看value属性值
  73. print u"删除value属性值后value属性值:", getAttribute(element, "value")
  74. time.sleep(3)
  75.  
  76. def tearDown(self):
  77. # 退出IE浏览器
  78. self.driver.quit()
  79.  
  80. if __name__ == '__main__':
  81. unittest.main()

webdriver高级应用- 改变一个页面对象的属性值的更多相关文章

  1. 如何遍历一个JSON对象的属性值???

    当遇到一个JSON格式的对象时,不知道它有多少个属性,也不知道有什么属性,该如何遍历它的属性及其属性值呢??? 还是使用Java语言还是很像的,使用for语句. var obj = data[i]; ...

  2. Vue 改变数组中对象的属性不重新渲染View的解决方案

    Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...

  3. vue修改对象的属性值后页面不重新渲染

    原文地址:vue修改对象的属性值后页面不重新渲染 最近项目在使用vue,遇到几次修改了对象的属性后,页面并不重新渲染,场景如下: HTML页面如下: [html] view plain copy &l ...

  4. eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?

    eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...

  5. 通过反射将一个java对象的属性值转换为一个Map

    将一个java对象的属性值转换为一个Map: import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.P ...

  6. JQuery 操作对象的属性值

    通过JQuery去操作前台对象(div,span...)的属性是很常见的事情,本文就简单的介绍几种操作情形. 1):通过属性值去获取对象 2):用JQuery去修改对象的属性值 3):获取并修改对象的 ...

  7. jquery attr()方法 添加,修改,获取对象的属性值。

    jquery attr()方法 添加,修改,获取对象的属性值. jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到 ...

  8. WPFS数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)

    WPFS数据绑定(要是后台类对象的属性值发生改变,通知在"client界面与之绑定的控件值"也发生改变须要实现INotitypropertyChanged接口) MainWindo ...

  9. 获取JSON对象的属性值

    1.问题背景 有一个json对象,其中有键值对,那怎样获取json对象中属性值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

随机推荐

  1. 零基础逆向工程15_C语言09_位运算

    1.汇编中的移位指令 算数移位指令 指令格式:SAL/SAR Reg/Mem, CL/Imm SAL(Shift Arithmetic Left):算数左移 SAR(Shift Arithmetic ...

  2. JAVA-WEB总结01

    1 工具常用的快捷键   1) Eclipse和MyEclipse,IBM,2001,Java编写,开源,跨平台跨语言   2)Alt+/快速内容提示(自己习惯定义)   3)Ctrl+1快速修补错误 ...

  3. jspscriptlet标签

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  4. UVA 562 Dividing coins 分硬币(01背包,简单变形)

    题意:一袋硬币两人分,要么公平分,要么不公平,如果能公平分,输出0,否则输出分成两半的最小差距. 思路:将提供的整袋钱的总价取一半来进行01背包,如果能分出出来,就是最佳分法.否则背包容量为一半总价的 ...

  5. 使用com.sun.imageio.plugins.png.PNGMetadata读取图片的元数据

    所谓图片元数据,就是除了我们肉眼看到的图片内容外,隐藏在这些内容背后的一些技术数据. 本文介绍如何使用Java代码将一张图片的隐藏信息读取出来. 首先不需要下载任何额外的Java库,用JDK自带的库就 ...

  6. CF Gym 100187A Potion of Immortality (思路,最坏情况的最小损失)

    根据兔子试药情况可以缩小范围,如果死了,不在试过的药里面,如果活着,在试过的药里. 最糟的情况: 两个原则 1.能确定魔药所在的范围的尽量大,2.死得兔子尽量多. 如果当前不知道情况的药n为k的二倍以 ...

  7. 剑指offer46 求1+2+...+n 以及& &&区别

    参考代码: class Solution { public: int Sum_Solution(int n) { int result = n; result && (result + ...

  8. 什么是redis的持久化?

    什么是redis的持久化? RDB 持久化:该机制可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化:记录服务器执行的所有写操作命令,并在服 ...

  9. python之道13

    看代码分析结果 func_list = [] for i in range(10): func_list.append(lambda :i) v1 = func_list[0]() v2 = func ...

  10. Vue 后台管理

    这里是结合vue和element快速成型的一个demo 里面展示了基本的后台管理界面的大体结构和element的基本操作 GitHub的地址:https://github.com/wwwming/ad ...