zoukankan      html  css  js  c++  java
  • Selenium 自动化测试工具

    1 介绍

    Selenium是浏览器的自动化测试工具,使用它可以控制浏览器各种点击等操作。

    2 环境搭建

    先安装Chrome等浏览器,然后安装对应版本的ChromeDriver驱动程序,然后pip安装Selenium

    2 代码示例

    看完,这个程序,你就掌握Selenium的基本用法

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver import ActionChains
    from selenium.common.exceptions import NoSuchElementException
    import time
    
    browser=webdriver.Chrome() # 实例化一个Chrome
    try:
        browser.get('https://www.baidu.com/') # 百度=======================================================================
    
        # # 例子测试
        # input = browser.find_element_by_id('kw')  # 查找对应节点
        # input.send_keys('python')
        # input.send_keys(Keys.ENTER)
        # wait = WebDriverWait(browser, 10)
        # wait.until(EC.presence_of_element_located((By.ID, 'content_left')))
        # print(browser.current_url) #当前页面url
        # print(browser.get_cookies()) # 当前页cookies
        # print(browser.page_source) # 当前页source html
    
        # 查找节点的方法
        # input_first=browser.find_element_by_id('kw')
        # input_second = browser.find_element_by_css_selector('#kw')
        # input_third = browser.find_element_by_xpath('//*[@id="kw"]')
        # print(input_third,input_second,input_third)
    
        # browser.get('https://www.taobao.com') # 淘宝=======================================================================
    
        # 多个节点
        # # lis=browser.find_elements_by_css_selector('.service-bd li') # 主要是将element换成elements
        # lis=browser.find_elements(By.CSS_SELECTOR,'.service li') # 和上面一样的
        # print(lis)
    
        # 节点交互
        # input=browser.find_element_by_id('q')
        # input.send_keys('iphone') # 输入文字
        # time.sleep(5)
        # input.clear() # 清空文字
        # input.send_keys('ipad')
        # button=browser.find_element_by_class_name('btn-search')
        # button.click() #按钮点击
    
        # 选项卡管理
        browser.execute_script('window.open()') # 打开一个选项啦
        time.sleep(3)
        print(browser.window_handles)
        browser.switch_to.window(browser.window_handles[1]) # 跳转到第二个选项卡
        browser.get('https://www.taobao.com') # 第二个选项卡访问淘宝
        time.sleep(3)
        browser.switch_to.window(browser.window_handles[0]) # 跳转回第一个选项卡
        browser.get('https://zhihu.com/explore') # 第一个选项卡访问知乎发现页 ,这样关闭的时候只会关闭第一个选项卡
    
        # # 前进 后退
        # browser.get('https://www.baidu.com/')
        # browser.get('https://www.zhihu.com/explore')
        # browser.back() # 后退
        # time.sleep(3)
        # browser.forward()
        # time.sleep(3)
    
        # 延时等待——显示等待
        # wait=WebDriverWait(browser,10) # 规定时间加载出来返回节点,没查找出来抛出异常
        # input=wait.until(EC.presence_of_element_located((By.ID,'q')))
        # button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))
        # print(input,button)
    
        # browser.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') # 菜鸟教程========================
    
        # # 动作链
        # browser.switch_to.frame('iframeResult') # 切换iframe
        # source=browser.find_element_by_css_selector('#draggable')
        # target=browser.find_element_by_css_selector('#droppable')
        # actions=ActionChains(browser) # 创建一个动作链对象
        # actions.drag_and_drop(source,target) # 调用actions的拖拽方法
        # actions.perform() # 执行方法
    
        # # 切换Frame
        # browser.switch_to.frame('iframeResult')
        # try:
        #     logo=browser.find_element_by_class_name('logo')
        # except NoSuchElementException:
        #     print('No Logo')
        # browser.switch_to.parent_frame()
        # logo=browser.find_element_by_class_name('logo') # 切换回父级frame
        # print(logo)
        # print(logo.text)
    
        # browser.get('https://zhihu.com/explore') # 知乎 发现页==============================================================
    
        # # 执行JavaScript
        # browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
        # time.sleep(3)
        # browser.execute_script('alert("To Bootom!")')
        # time.sleep(3)
        # browser.switch_to.alert.accept()
    
        # # 获取节点信息
        # logo=browser.find_element_by_id('Popover1-toggle')
        # print(logo)
        # print(logo.get_attribute('class')) # 获取属性
        # input=browser.find_element_by_class_name('ExploreSpecialCard-title')
        # print(input.text) # 获取文本
        # print(input.id) # 获取id
        # print(input.location) # 获取location
        # print(input.tag_name) # 获取tag_name
        # print(input.size) # 获取大小
    
        # # Cookies
        # print(browser.get_cookies())
        # browser.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'}) # 添加一个cookie
        # print(browser.get_cookies())
        # browser.delete_all_cookies() # 删除所有的cookies
        # print(browser.get_cookies())
    
        # 延时等待-隐式等待
        # browser.implicitly_wait(10) #在找不到节点的时候等待10s之后抛出异常
        # input=browser.find_element_by_class_name('zu-top-add-question') # 这个节点不存在
        # print(input)
    
    
    finally:
        browser.close()
  • 相关阅读:
    生产力-能力-生产工具
    window.location.Reload()和window.location.href 区别
    getAttribute() 与 attr() 的区别
    清空标签间的内容(innerHTML)和 value
    使用 data-* 属性来嵌入自定义数据:
    JS-jquery 获取当前点击的对象
    Redis深度历险——核心原理与应用实践
    PhpStorm 配置 Xdebug调试工具
    phpCOW机制详解
    rel=nofollow 是什么意思
  • 原文地址:https://www.cnblogs.com/weimingai/p/15066169.html
Copyright © 2011-2022 走看看