selenium中常用js操作

 

 

开胃菜,当html元素没有id,name等这些属性信息时如何获取值呢?

通过css选择器

$(" #test ").val()
$(" input[ name='test' ] ").val()
$(" input[ type='text' ] ").val()
$(" input[ type='text' ]").attr("value")


1.document.title获取当前页面的title
2.JSON.stringify(performance.timing)获取当前页面的性能数据
3.使用js定位元素
document.getElementById(“kw”)
document.getElementsByName("")
document.getElementsByClassName("")
document.getElementsByTagName("")
4.页面滚动
滚动到顶部
document.documentElement.scrollTop=0
滚动到底部
document.documentElement.scrollTop=10000
5.修改readonly属性
a=document.getElementById(“train_date”)
<input type=​"text" class=​"input" value=​"2018-07-21" id=​"train_date">​
a.removeAttribute(‘readonly’)
undefined
a.value=‘2020-03-06’
“2020-03-06”


调用JS语法

调用JS语法需要用到selenium中的方法 execute_script() ,参数直接填写JS语法。

源码:

def execute_script(self, script, *args):
        """
        Synchronously Executes JavaScript in the current window/frame.

        :Args:
         - script: The JavaScript to execute.
         - \*args: Any applicable arguments for your JavaScript.

        :Usage:
            driver.execute_script('return document.title;')
        """
        converted_args = list(args)
        command = None
        if self.w3c:
            command = Command.W3C_EXECUTE_SCRIPT
        else:
            command = Command.EXECUTE_SCRIPT

        return self.execute(command, {
            'script': script,
            'args': converted_args})['value']

JS定位元素

# 1、通过元素id属性,获取元素
document.getElementById('id');

# 2、通过元素name属性,获取元素列表
document.getElementsByName('name');

# 3、通过标签名,获取元素列表
document.getElementsByTagName('tag_name');

# 4、通过类名,获取元素列表
document.getElementsByClassName("class_name");

# 5、通过选择器,获取一个元素
document.querySelector("css selector")

# 6、通过CSS选择器,获取元素列表
document.querySelectorAll("css selector")

JS修改元素属性

web自动化主要是对页面元素进行操作,有时候无法定位或者找不到元素,我们可以通过JS进行修改元素属性,然后在进行通过JS定位

# 修改元素属性
document.getElementById("id").setAttribute("属性名","属性值")

其他通过JS操作元素操作

1、删除属性

# 删除属性
document.getElementById("id").removeAttribute("属性值")

2、获取属性

# 获取元素属性值
document.getElementById("id").getAttribute(属性值)

# 如果想要获取js返回的属性值,需要js前加return
js2 = 'return  document.getElementById("anjing").getAttribute("name")'
x = driver.execute_script(js2)
print(x)

3、修改属性值

# 修改属性值
document.getELementById("id").属性="属性值"

 

 

 

 

 

 

常用操作举例:

#鼠标滚动到底部操作
element=self.driver.execute_script("return document.getElementById('su')")
self.driver.execute_script("document.documentElement.scrollTop=10000")
#返回js元素的value值
self.driver.execute_script("return document.getElementById('train_date').value")
#修改time_element的值,并返回
self.driver.execute_script("a=document.getElementById('train_date');a.removeAttribute('readonly')")
self.driver.execute_script("a=document.getElementById('train_date').value='2020-03-06'")
print(self.driver.execute_script("return document.getElementById('train_date').value"))

 

 



posted @ 2021-06-15 17:56  八戒不爱吃西瓜  阅读(577)  评论(0编辑  收藏  举报