zoukankan      html  css  js  c++  java
  • selenium基础(元素定位)

    selenium的帮助文档: https://selenium-python.readthedocs.io/api.html#module-selenium.common.exceptions

    目前支持的WebDriver实现有Firefox、Chrome、IE和Remote

     selenium元素定位

    seleniun中的八种定位方式

    id:通过元素id进行定位,格式:find_element_by_id()

    name:通过元素的name进行定位,格式:find_element_by_name()

    class name:通过元素的属性名进行定位,格式:find_element_by_class_name()

    tag name:通过元素的标签名进行定位,格式:find_element_by_tag_name()

    link text:通过元素的完整的链接文本的内容进行定位,格式:find_element_by_link_text()

    partial link text:通过元素的部分的链接文本的内容进行定位,格式:find_element_partial_link_text()

    xpath:通过xpath选择器进行定位,格式:find_element_by_xpath()

    css selector:通过css选择器进行定位,格式:find_element_by_css_selector()

     css_selector定位详解

    driver.find_element_by_css_selector()

    css定位可以分为四类:id、class、其他属性、路径。

    1 #id方式

    两种方式,可以在前面加上tag名称,也可以不加

    driver.find_element_by_css_selector(‘#id_value’)

    driver.find_element_by_css_selector(‘tag_name#id_value’)

    例:

    from selenium import webdriver
    import time
    
    driver=webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(8)
    driver.get('https://www.baidu.com')
    driver.find_element_by_css_selector('#kw').send_keys('css选择器')#通过css选择器中的id进行定位
    driver.find_element_by_css_selector('input#su').click()#通过css选择器中的标签名+id进行定位

    2 .class方式

    两种方式,前面加上tag名称,也可以不加。如果不加tag名称时,点不能省略。

    driver.find_element_by_css_selector(‘.class_value’)

    driver.find_element_by_css_selector(‘tag_name.class_value’)

    有的class_value比较长,而且中间有空格时,不能把空格原样写进去,那样不能识别。这时,空格用点代替,前面要加上tag_name。

    如:driver.find_element_by_css_selector('div.panel.panel-email').click()

    例:

    from selenium import webdriver
    import time
    
    driver=webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(8)
    driver.get('https://www.baidu.com')
    driver.find_element_by_css_selector('.s_ipt').send_keys('css选择器')#通过css选择器中的class进行定位
    driver.find_element_by_css_selector('input.bg.s_btn').click()#通过css选择器中的标签名+class进行定位

    3其他属性方式

    两种方式,可以在前面加上tag名称,也可以不加。

    driver.find_element_by_css_selector(“[attri_name=’attri_value’]”)

    driver.find_element_by_css_selector("input[type='password']").send_keys('我要自學網')

    driver.find_element_by_css_selector("[type='password']").send_keys('我要自學網')

    from selenium import webdriver
    import time
    
    driver=webdriver.Firefox()
    driver.maximize_window()
    driver.implicitly_wait(8)
    driver.get('https://www.baidu.com')
    driver.find_element_by_css_selector("[name='wd']").send_keys('css选择器')#通过css选择器中用键值对的方式进行定位
    driver.find_element_by_css_selector("input[type='submit']").click()#通过css选择器中的标签名+键值对进行定位

    4路径法

    两种方式,可以在前面加上tag名称,也可以不加。注意它的层级关系使用大于号“>”。

    driver.find_element_by_css_selector("form#loginForm>ul>input[type='password']").send_keys('111222333')

     Xpath定位

     Xpath定位实例

    下面是一段HTML代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>xpath定位元素练习</title>
        </head>
        <body>
            <form>
                用户名:
                <input type="name" name="username" id=1>
                <br />
                密码:
                <input type="password" name="password" id=2>
            </form>
        <p>
            age:
            <input type="text" name="age">
        </p>
        </body>
    </html>
    from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys#引入Keys方法包,用于键盘操作
    
    driver=webdriver.Firefox()
    driver.maximize_window()
    #进入HTML页面,“r"是对输入内容中的反斜杠进行转移
    driver.get(r"http://127.0.0.1:8848/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/1.html")
    #通过绝对路径进行查找
    driver.find_element_by_xpath("/html/body/form/input").send_keys("selenium")
    time.sleep(2)
    #通过绝对路径进行查找
    driver.find_element_by_xpath('/html/body/form/input[@name="username"]').clear()
    time.sleep(2)
    #通过相对路径进行查找
    driver.find_element_by_xpath('//body/form/input[2]').send_keys("123")
    time.sleep(2)
    #通过相对路径进行查找
    driver.find_element_by_xpath('//body/form/input[2][@type="password"]').clear()
    time.sleep(2)
    driver.find_element_by_xpath('//p/input').send_keys(20)
    time.sleep(2)
    
    driver.quit()

     

    from selenium import webdriver
    import time
    from selenium.webdriver.common.keys import Keys#引入Keys方法包,用于键盘操作
    
    driver=webdriver.Firefox()
    driver.maximize_window()
    #进入HTML页面,“r"是对输入内容中的反斜杠进行转移
    driver.get(r"http://127.0.0.1:8848/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/1.html")
    #通过绝对路径进行查找
    driver.find_element_by_xpath("/html/body/form/input").send_keys("selenium")
    time.sleep(2)
    #通过绝对路径进行查找
    driver.find_element_by_xpath('/html/body/form/input[@name="username"]').clear()
    time.sleep(2)
    #通过相对路径进行查找
    driver.find_element_by_xpath('//body/form/input[2]').send_keys("123")
    time.sleep(2)
    #通过相对路径进行查找
    driver.find_element_by_xpath('//body/form/input[2][@type="password"]').clear()
    time.sleep(2)
    driver.find_element_by_xpath('//p/input').send_keys(20)
    time.sleep(2)
    #利用//form/input的父节点进行查找
    driver.find_element_by_xpath('//form/input/../input').send_keys('利用父节点进行查找')
    time.sleep(2)
    #通过相对路径和元素属性的方式进行查找
    driver.find_element_by_xpath('//input[@id=2]').send_keys('000')#查找所有input标签中id为2的标签
    time.sleep(2)
    #‘//*’即遍历所有的元素
    #查找两个包含input标签的元素的父元素,然后查找里面的第一个input标签
    driver.find_element_by_xpath('//*[count(input)=2]/input[1]').send_keys('123')
    time.sleep(2)
    
    driver.quit()
  • 相关阅读:
    nginx-1.8.1的安装
    ElasticSearch 在3节点集群的启动
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
    LeetCode 501. Find Mode in Binary Search Tree (找到二叉搜索树的众数)
    LeetCode 437. Path Sum III (路径之和之三)
    LeetCode 404. Sum of Left Leaves (左子叶之和)
    LeetCode 257. Binary Tree Paths (二叉树路径)
    LeetCode Questions List (LeetCode 问题列表)- Java Solutions
    LeetCode 561. Array Partition I (数组分隔之一)
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11674546.html
Copyright © 2011-2022 走看看