zoukankan      html  css  js  c++  java
  • 自动化测试工具selenium的使用

    selenium工具的使用场景

    # 用于自动化测试
    # 解决requests模块无法执行js代码的问题
    
    # 安装selenium工具
    pip install selenium
    

    浏览器驱动http://npm.taobao.org/mirrors/chromedriver/

    驱动一定要和浏览器的版本对应上(80.0.3987.163)

    简单使用

    from selenium import webdriver
    
    # 得到一个谷歌浏览器对象
    # 指定使用哪个驱动
    bro = webdriver.Chrome(executable_path='./chromedriver.exe')
    bro.get('http://www.mzitu.com')  # 在地址栏输入了妹子图
    time.sleep(2)
    print(bro.page_source)
    time.sleep(2)
    bro.close()
    

    selenium模拟登陆百度

    from selenium import webdriver
    import time
    
    bro = webdriver.Chrome(executable_path='./chromedriver.exe')  # 得到一个谷歌浏览器对象
    
    # 隐式等待
    bro.implicitly_wait(5)  # 隐士等待:找一个控件,如果控件没有加载出来,等待5s中  等待所有,只需要写着一句,以后找所有控件都按这个操作来
    
    bro.get('http://www.baidu.com')
    
    login_btn = bro.find_element_by_link_text('登录')
    login_btn.click()
    
    account_login = bro.find_element_by_id('TANGRAM__PSP_11__footerULoginBtn')
    account_login.click()
    
    username_input = bro.find_element_by_id('TANGRAM__PSP_11__userName')
    password_input = bro.find_element_by_id('TANGRAM__PSP_11__password')
    login_submit = bro.find_element_by_id('TANGRAM__PSP_11__submit')
    
    username_input.send_keys('183xxxxxxx407')
    password_input.send_keys('xxxxxxxxx')
    time.sleep(5)
    login_submit.click()
    time.sleep(10)
    
    print(bro.get_cookies())
    bro.close()
    

    selenium的find系列

    # 所有的方法
    # 1、find_element_by_id   # 通过id查找控件
    # 2、find_element_by_link_text  # 通过a标签内容找
    # 3、find_element_by_partial_link_text  # 通过a标签内容找,模糊匹配
    # 4、find_element_by_tag_name   # 标签名
    # 5、find_element_by_class_name  # 类名
    # 6、find_element_by_name      # name属性
    # 7、find_element_by_css_selector  # 通过css选择器
    # 8、find_element_by_xpath       # 通过xpaht选择器
    

    注意:

    find_elements_by_xxx的形式是查找到多个元素,结果为列表
    

    控件的操作

    # 获取元素的属性
    重点
    
    tag.get_attribute('href')  # 找当前控件的href属性对的值
    tag.text     # 获取文本的内容
    
    # 了解
    tag.id          # 当前控件的id号
    tag.location    # 当前控件在页面的位置
    tag.tag_name    # 当前控件的标签名
    tag.size        # 当前控件的大小
    

    无界面浏览器

    无界面浏览器(phantomjs)
    # 谷歌浏览器也支持不打开页面
    
    from selenium import webdriver
    
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()   # 实例化得到一个Options对象
    # 进行浏览器的相关设置
    chrome_options.add_argument('window-size=1920x3000')  # 指定浏览器的分辨率
    chrome_options.add_argument('--disable-gpu')  # 谷歌文档提到需要加上这个属性来规避一些bug
    chrome_options.add_argument('--hide-scrollbars')  # 隐藏滚动条
    
    chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片
    chrome_options.add_argument('--headless')  # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
    
    bro=webdriver.Chrome(chrome_options=chrome_options,executable_path='./chromedriver.exe')
    
    bro.get('https://www.baidu.com/')
    print(bro.page_source)
    bro.close()
    

    元素之间的交互

    # tag.send_keys()  # 往里面写内容
    # tag.click()      # 点击控件
    # tag.clear()      # 清空控件内容
    

    执行js代码

    from selenium import webdriver
    
    import time
    
    bro = webdriver.Chrome(executable_path='./chromedriver.exe')
    bro.implicitly_wait(5)
    
    bro.get('http://www.baidu.com/')
    
    bro.execute_script('window.open()')
    bro.execute_script('window.open()')
    time.sleep(2)
    bro.close()
    

    模拟浏览器前进后退

    from selenium import webdriver
    import time
    browser=webdriver.Chrome(executable_path='./chromedriver.exe')
    browser.get('https://www.baidu.com')
    browser.get('https://www.taobao.com')
    browser.get('http://www.sina.com.cn/')
    
    browser.back() # 后退
    time.sleep(1)
    browser.forward()  # 前进
    
    browser.close()
    

    选项卡管理(了解)

    from selenium import webdriver
    import time
    browser=webdriver.Chrome()
    browser.get('https://www.baidu.com')
    browser.execute_script('window.open()')
    
    print(browser.window_handles) #获取所有的选项卡
    browser.switch_to_window(browser.window_handles[1])
    browser.get('https://www.taobao.com')
    time.sleep(2)
    browser.switch_to_window(browser.window_handles[0])
    browser.get('https://www.sina.com.cn')
    browser.close()
    

    异常处理

    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException,NoSuchElementException,NoSuchFrameException
    browser=webdriver.Chrome()
    try:
        browser.get('')
    except Exception as e:
        print(e)
    finally:
        browser.close()
    

    动作链

    #### 如何把屏幕拉倒最后(js控制)
    
    # bro.execute_script('window.scrollTo(0,document.body.offsetHeight)')
    
  • 相关阅读:
    前端面试攻略1------算法部分
    MongoDB学习
    MongoDB作为Windows服务来安装 错误1053:服务没有及时响应启动或控制请求
    Vue 入门之 Vuex 实战
    Vue 路由详解
    vue入门全局配置
    VSCode配合ESLint自动修复格式化
    vue入门之单文件组件
    Echarts图表-学习
    GoJS学习
  • 原文地址:https://www.cnblogs.com/surpass123/p/13437011.html
Copyright © 2011-2022 走看看