• 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"))


  • 相关阅读:
    B16-高可用OpenStack(t版)集群分布式存储Ceph部署
    B15-openstack高可用(t版)-cinder计算节点集群
    B14-openstack高可用(t版)-cinder控制节点集群
    B13-openstack高可用(t版)-horazion计算节点集群
    B12-openstack高可用(t版)-Neutron计算节点集群
    B11-openstack高可用(t版)-Neutron控制/网络节点集群
    mysql(windows 10 安装)
    docker 容器 centos + tomcat + jdk
    docker 安装
    docker 把镜像打包成文件
  • 原文地址:https://www.cnblogs.com/Jungle1219/p/14886534.html
Copyright © 2020-2023  润新知