zoukankan      html  css  js  c++  java
  • python-selenium笔记之元素定位

    selenium用于web应用程序的自动化测试工具,支持多种浏览器、多种脚本语言编写及录制的工具。

    测试过程可以使用python+selenium进行做UI界面自动化,UI界面自动化一个基础核心是元素定位。

    selenium提供了单元素定位和多元素定位,2种方式都有8种元素定位方式:

    单元素定位方法:

    find_element_by_id:通过元素id属性定位  (find_elements_by_id:多元素定位,返回是列表定位位置,默认定位到第一个,索引是从0开始,其他几种多元素定位类似)
    find_element_by_name:通过元素name属性定位
    find_element_by_xpath:通过元素xpath定位
    find_element_by_tag_name:通过元素标签名属性定位
    find_element_by_link_text:通过元素文本链接属性定位
    find_element_by_partial_link_text:通过元素部分文本链接属性定位
    find_element_by_class_name:通过元素类属性名定位
    find_element_by_css_selector:通过元素css定位

    多元素定位方法:
    find_elements_by_id:通过元素id属性定位,多元素定位,返回是列表定位位置,默认定位到第一个,索引是从0开始,其他几种多元素定位类似
    find_elements_by_name:通过元素name属性定位
    find_elements_by_xpath:通过元素xpath定位
    find_elements_by_tag_name:通过元素标签名属性定位
    find_elements_by_link_text:通过元素文本链接属性定位
    find_elements_by_partial_link_text:通过元素部分文本链接属性定位
    find_elements_by_class_name:通过元素类属性名定位
    find_elements_by_css_selector:通过元素css定位
    下面看一下实例:
    定位百度输入框,下面是对应的html代码

    1 from selenium import webdriver
    2 from selenium.webdriver.common.by import By
    3 
    4 driver = webdriver.Chrome()
    5 driver.find_element_by_id("kw")
    6 driver.find_element_by_name("wd")
    7 driver.find_element_by_xpath('//*[@id="kw"]')
    8 driver.find_element_by_css_selector('#kw')
    9 driver.find_element_by_class_name('s_ipt')

    定位新闻链接:

    1 driver.find_element_by_link_text("新闻")
    2 driver.find_element_by_partial_link_text('')

    tag_name标签名称定位一般用于定位多元素定位

    通过input标签查找百度输入框,返回是列表,索引是从0开始

    1 s = driver.find_elements_by_tag_name("input")
    2 print(s[7].get_attribute('id'))
    在做界面测试时经常会遇到因页面加载慢或者网速问题,导致元素加载出来时间不确定,脚本执行不稳定,因此在找出元素时可以进行增加显示等待时间,
    增加脚本的稳定性,可以对定位元素的方法进行二次封装
    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.support.wait import  WebDriverWait
    from selenium.webdriver.common.by import By
    
    class Page():
        def __init__(self,driver):
            self.driver = driver
    
    
        def find_element(self,*loc):
            try:
                wait = WebDriverWait(self.driver,timeout = 10)
                wait.until(lambda x:x.find_element(*loc).is_displayed())
                return self.find_element(*loc)
            except TimeoutException:
                raise "Time out"
    
    
        def find_elements(self,*loc):
            try:
                wait = WebDriverWait(self.driver,timeout = 10)
                wait.until(lambda x:x.find_elements(*loc).is_displayed())
                return self.find_elements(*loc)
            except TimeoutException:
                raise "Time out"







  • 相关阅读:
    javaScirpt学习之事件
    验证表单内容之后如何阻止表单提交
    利用js制作异步验证ajax方法()
    Ajax制作无刷新评论系统
    ajax查询数据的举例
    以Ajax的方式访问数据库
    jquery中的全局事件
    jquery序列化元素
    jquery中的ajax
    jquery与ajax的应用
  • 原文地址:https://www.cnblogs.com/heertong/p/12293131.html
Copyright © 2011-2022 走看看