美文网首页python 爬虫selenium自动化操作
selenium自动化操作之三:元素定位和操作

selenium自动化操作之三:元素定位和操作

作者: 52d19f475fe5 | 来源:发表于2019-08-18 14:07 被阅读9次

    元素(对象)的定位和操作是自动化测试的核心部分,其中操作是建立在定位的基础上的,因此元素的定位就显得非常重要。

    一个对象就像一个人,他会有各种的特征(属性),比如我们可以通过一个身份证号、姓名或者他所住的地址找到这个人。那么一个元素也是具有类似的属性,我们可以通过这种唯一区别于其它元素的属性来定位这个元素。当然,除了要操作元素时需要定位元素外,为了获取元素中的文本、属性值或数量也需要定位元素。

    1 元素定位的方法

    webdriver提供了一系列的元素定位方法,常用的有以下几种:

    以百度为例
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from time import sleep
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    • driver.find_element_by_id():根据id来查找某个元素。等价于:
    driver.find_element_by_id('kw')
    driver.find_element(By.ID,'kw')
    
    • driver.find_element_by_name():根据name属性的值来查找元素。等价于:
    driver.find_element_by_name('wd')
    driver.find_element(By.NAME,'wd')
    
    • driver.find_element_by_class_name():根据类名来查找元素。等价于:
    driver.find_element_by_class_name('s_ipt')
    driver.find_element(By.CLASS_NAME,'s_ipt')
    
    • driver.find_elements_by_tag_name():根据标签名来查找元素。等价于:
    driver.find_elements_by_tag_name('input')
    driver.find_elements(By.TAG_NAME,'input')
    
    • driver.find_element_by_xpath():根据xpath语法来获取元素。等价于:
    driver.find_element_by_xpath('//input[@id="kw"]')
    driver.find_element(By.XPATH,'//input[@id="kw"]')
    
    • driver.find_element_by_css_selector():根据css选择器来选择元素。等价于:
    driver.find_element_by_css_selector('#kw')
    driver.find_element(By.CSS_SELECTOR,'#kw')
    
    • driver.find_element_by_link_text():根据文字链接的全部文本来获取元素。等价于:
    driver.find_element_by_link_text('学术')
    driver.find_element(By.LINK_TEXT,'学术')
    
    • driver.find_element_by_partial_link_text():根据文字链接的部分文本来获取元素。等价于:
    driver.find_element_by_partial_link_text('hao')
    driver.find_element(By.PARTIAL_LINK_TEXT,'hao')
    

    注意:

    • find_elementfind_elements的区别:返回一个元素和返回元素列表
    • by_link_textby_partial_link_tex的区别:全部文本和包含某个文本

    2 获取元素中的数据

    find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法:

    • 获取文本:element.text
    text = driver.find_element_by_partial_link_text('hao').text
    print(text)
    
    • 获取属性值:element.get_attribute("属性名")
    attribute = driver.find_element_by_id('su').get_attribute('value')
    print(attribute)
    
    • 获取元素的尺寸:element.size
    size = driver.find_element_by_id('kw').size
    print(size)
    
    • 元素是否用户可见:element.is_displayed(),返回TrueFlase
    see = driver.find_element_by_id('kw').is_displayed()
    print(see)
    
    3 对元素操作的方法
    • 填写输入框:send_keys('输入内容')
    sleep(2)
    driver.find_element_by_id('kw').send_keys('selenium自动化测试')
    
    • 清空输入框:clear()
    sleep(2)
    driver.find_element_by_id('kw').send_keys('selenium自动化测试')
    sleep(2)
    driver.find_element_by_id('kw').clear()
    
    • 单击元素:click()
    1. 单击按钮,示例:百度一下按钮
    sleep(2)
    driver.find_element_by_id('kw').send_keys('selenium自动化测试')
    sleep(2)
    driver.find_element_by_id('su').click()
    

    2.单击文字链接,示例:hao123链接

    sleep(2)
    driver.find_element_by_partial_link_text('hao123').click()
    

    3.单击图片,示例:输入框上面的图片

    sleep(2)
    driver.find_element_by_tag_name('area').click()
    

    4.单击下拉按钮,示例:右上角的更多产品文库

    sleep(2)
    driver.find_element_by_css_selector('a.bri').click()
    sleep(2)
    driver.find_element_by_name('tj_wenku').click()
    
    • 提交表单:submit()
    sleep(2)
    driver.find_element_by_id('kw').send_keys('selenium提交表单')
    sleep(2)
    driver.find_element_by_id('su').submit()
    

    注意:

    • click()用于单击任何可以点击的元素,文字/图片链接,按钮,下拉按钮等。

    • submit()要求提交对象是一个表单,更强调对信息的提交。比如:一个文字链接不能用submit()方法。

    • click()更强调事件的独立性。

    相关文章

      网友评论

        本文标题:selenium自动化操作之三:元素定位和操作

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