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()
  • 相关阅读:
    testng
    RF相关命令
    批处理bat相关
    VIM常用快捷键
    JAVA异常处理
    cucumber+selenium
    webDriver各版本对应
    python源码
    python之logging模块
    pywinauto进阶练习
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11674546.html
Copyright © 2011-2022 走看看