zoukankan      html  css  js  c++  java
  • selenium 用法详解

    selenium  webdriver官方文档 

    webdriver可以认为是浏览器的驱动器,要驱动浏览器必须用到webdriver,支持多种浏览器,这里以Firefox为例


    from selenium import webdriver
    #要想调用键盘按键操作需要引入keys包
    from selenium.webdriver.common.keys import Keys
    def get_browser():
        browser=webdriver.Firefox()
        ## get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 time.sleep(2)
        browser.get("http://www.baidu.com")
        #id="kw"是百度搜索输入框,输入字符串" "
        browser.find_element_by_id("kw").send_keys(u'易烊千玺')
        #id="su"是百度搜索按钮,click() 是模拟点击
        browser.find_element_by_id("su").click()
    if __name__=="__main__":
        get_browser()

     元素定位 ,有如下的API 单个元素选取

    find_element_by_id
    find_elements_by_name
    find_elements_by_xpath
    find_elements_by_link_text
    find_elements_by_partial_link_text
    find_elements_by_tag_name
    find_elements_by_class_name
    find_elements_by_css_selector
    <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
    <input type="submit" id="su" value="百度一下" class="bg s_btn">
    <a href="http://www.google.com/search?q=cheese">cheese</a>
    <a href="http://www.google.com/search?q=cheese">search for cheese</a>>
    #id 定位
    browser.find_element_by_id("kw")
    #name定位
    browser.find_element_by_name("wd")
    #class定位
    browser.find_element_by_class_name("s_ipt")
    #tag定位
    browser.find_element_by_tag_name("input")
    #link定位
    browser.find_element_by_link_text("cheese")
    #partial link 定位
    browser.find_element_by_partial_link_text("search for")

    #Xpath 定位 (可通过复制 XPath )

    browser.find_element_by_xpath("//*[@id='kw']")
    # CSS定位(可通过复制 CSS 选择器/CSS 路径)
    browser.find_element_by_css_selector("#kw")

      用By 定位元素

    针对前面的8种定位方法,webdriver还提供了另一套写法,即统一调用find_element() 方法,通过By来声明定位的方法,并且传入对应定位方法的定位参数

    from selenium.webdriver.commom.by import By      
    browser.find_element(By.ID,"kw")
    browser.find_element(By.NAME,'wd')
    browser.find_element(By.CLASS_NAME,"s_ipt")
    browser.find_element(By.TAG_NAME,"input")
    browser.find_element(By.LINK_TEXT,"cheese")
    browser.find_element(By.PARTIAL_LINK_TEXT,"for")
    browser.find_element(By.XPATH,"//*[@id='kw']")
    browser.find_element(By.CSS_SELECTOR, "#kw")

     简单元素操作

    • clear()    清除文本
    • send_keys(*value) 模拟按键输入
    • click()      单击元素

    鼠标事件


    现在的web产品中,提供了更丰富的鼠标交互方式,例如鼠标右击、双击、悬停、鼠标拖动等功能,在webdriver中,将这些关于鼠标的操作封装在ActionChains 类提供

    • perform()     执行所有ActionChains中存储的行为
    • context_click()        右击
    • double_click()         双击
    • drag_and_drop()     拖动
    • move_to_element()   鼠标悬停
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.action_chains import ActionChains
    def get_browser():
        browser=webdriver.Firefox()
        ## get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 
        browser.get("http://www.baidu.com")
        #定位到要右击的元素
        right_click=browser.find_element_by_css_selector("#kw")
        #对定位到的元素执行鼠标右击的操作
        ActionChains(browser).context_click(right_click).perform()
  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/yan-2010/p/14229946.html
Copyright © 2011-2022 走看看