美文网首页Selenium相关
Selenium给元素的属性赋值

Selenium给元素的属性赋值

作者: 米洛丶 | 来源:发表于2017-06-02 17:41 被阅读0次
  • 我们在做UI自动化测试的过程中,某些情况会遇到,需要操作WebElement属性的情况。

假设现在我们需要获取一个元素的title属性,我们可以先找到这个元素,然后利用get_attribute方法获取属性的值。
举个栗子:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
search_button = driver.find_element_by_id("su")  # 百度搜索按钮
# 现在我们获取百度一下的值
value = search_button.get_attribute("value")  # 获取input标签的value,也就是百度一下那4个字
print(value)   # 打印  百度一下


但是现在我们有了新的需求,我们需要改变百度一下这个按钮里边显示的值。

先说一下原理,原理是利用js的dom(document object model),也就是文档对象模型,获取到input标签, 然后通过js来改变这个input标签的value属性。
js如下:

var button = document.getElementById("su");
button.setAttribute("su", "你猜一下");
//或者直接给value属性赋值
document.getElementById("su").value = "你猜一下";

我们在Chrome DevelopmentTools里边可以看到,“百度一下”变成了“你猜一下”~

image.png

那么为什么我们不直接用driver.execute_script()这个方法来执行上述js语句呢,但是要知道,因为dom里获取元素的方式有限,并不如selenium那么方便,什么link_text这类的api都是无法使用的。

昨天偶然发现2个问题,第一是execute_script函数是可以传脚本参数进去的,第二个是selenium抓取到的元素可以作为js的dom元素处理。有了这2点之后呢,就可以干活了!


现在用WebElement的方法做到同样的事情

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
search_button = driver.find_element_by_id("su")  # 百度搜索按钮
# arguments[0]对应的是第一个参数,可以理解为python里的%s传参,与之类似
driver.execute_script("arguments[0].value = '你猜一下';", search_button)



补充一点, 如果需要获取js语句执行后的返回值,在js语句前加"return" 就行了,例如:

button_value = driver.execute_script("return arguments[0].value;", search_button)

相关文章

  • Selenium给元素的属性赋值

    我们在做UI自动化测试的过程中,某些情况会遇到,需要操作WebElement属性的情况。 假设现在我们需要获取一个...

  • Selenium给元素的属性赋值

    利用selenium获取某个元素的value值,我们可以根据它的标签获取属性,然后利用 get_attribute...

  • selenium核心技术

    一 selenium 元素定位 二 webdirver的常用属性 三 selenium webdriver方法 四...

  • DOM2级事件的核心运行机制

    1、DOM0 事件绑定 语法:元素.on事件行为=function(){} 原理:给元素的私有属性赋值,当事件触发...

  • python 调用selenium备忘

    python打开selenium 浏览器设置 webdriver 重要属性 搜索网页元素 获取元素属性 动作模拟 ...

  • selenium 的元素、元素定位、属性

    WebDriver(元素) 元素描述id标示size尺寸rect尺⼨和坐标tag_name标签名称text⽂本内容...

  • 2018-07-24 事件与事件委托机制

    为dom元素添加事件的方式有三种 1:直接在dom元素上,添加属性onclick,然后将一个函数赋值给这个属性即可...

  • JS之First-Class Functions

    First-Class Functions(头等函数) 函数享有与变量同等的待遇可被赋值给变量、数列元素和对象属性...

  • KVC 如何给非对象属性赋值

    kvc给对象属性赋值大家肯定已经很熟悉了,但是怎么给非对象属性赋值呢,现在举例给以结构体为属性并赋值为例: 打印结...

  • vue获取dom元素的方法

    在标签上给一个ref属性并赋值 那么用this.$refs.collectionTag便可以获取单个的dom元素 ...

网友评论

    本文标题:Selenium给元素的属性赋值

    本文链接:https://www.haomeiwen.com/subject/vqpufxtx.html