zoukankan      html  css  js  c++  java
  • selenium-常用操作总结

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.get('https://******')
    ele = driver.find_element(By.ID, 'xxx')
    

    1.设置浏览器窗口大小

    driver.set_windows(800, 800)

    2.控制浏览器后退、前进

    driver.back()

    driver.forward()

    3.模拟浏览器刷新

    driver.refresh()

    4.webdriver操作

    清除文本

    ele.clear()

    模拟按键输入

    ele.send_keys('hello world')

    单击元素

    ele.click()

    提交表单(不提供搜索按钮的搜索框)

    ele.send_keys('xxx')

    ele.submit()

    返回元素尺寸

    size = ele.size

    获取元素文本

    text = ele.text

    获取属性值(可以是id/name/type等属性)

    attribute = ele.get_attribute('id')

    元素是否可见(返回结果True or False)

    result = ele.is_displayed()

    5.鼠标操作
    Webdriver中,与鼠标操作相关的方法都封装在ActionChains类中
    from selemiun.webdriver import ActionChans

    鼠标悬停

    move_to_element()

    右击

    context_click()

    双击

    double_click()

    拖动

    drag_and_drop()

    执行ActionChains类中存储的所有行为

    perform()

    例句

    ActionChans(driver).move_to_element(ele).context_click().perform()

    6.键盘操作

    删除键(BackSpace)

    ele.send_keys(Keys.BACK_SPACE)

    空格键(Space)

    ele.send_keys(Keys.SPACE)

    制表键(Tab)

    ele.send_keys(Keys.TAB)

    回退键(Esc)

    ele.send_keys(Keys.ESCAPE)

    回车键(Enter)

    ele.send_keys(Keys.ENTER)

    全选(Ctrl+a)

    ele.send_keys(Keys.CONTROL, 'a')

    复制(Ctrl+c)

    ele.send_keys(Keys.CONTROL, 'c')

    剪切(Ctrl+x)

    ele.send_keys(Keys.CONTROL, 'x')

    粘贴(Ctrl+v)

    ele.send_keys(Keys.CONTROL, 'v')

    键盘F1...F12

    ele.send_keys(Keys.F1) ... ele.send_keys(Keys.F12)

    7.获得验证信息

    获取当前页面的标题

    title = driver.title

    获取当前页面的URL

    url = driver.current_url

    获取当前页面元素的文本信息

    text = ele.text

    8.设置元素等待

    from selemiun.webdriver.support.ui import webdriverWait
    from selemiun.webdriver.support import expected_conditions as EC
    

    显式等待: 等待某个条件成立则继续执行,否则达到最大时长抛出超时异常

    element = webdriverWait(driver, 10, 0.5).until(EC.visibility_of_element_located((By.ID, 'xxx')))
    element.send_keys('xx')
    
    超时时间为10秒,每0.5秒检查一次,直到'xxx'元素是否可见,才会继续执行下面操作,超过10秒则抛出异常:NoSuchElementExcpetion
    

    隐式等待

    通过一定的时长等待页面上某个元素加载完成。如果超出了设置的时长元素还没有被加载,则抛出NoSuchElementException异常。它的作用范围就是Webdriver对象实例的整个生命周期。

    driver.implicitly_wait(20)

    9.多表单切换

    login_frame = driver.find_element(By.CSS_SELECTOR, 'xxxx')

    driver.switch_to.frame(login_frame)

    10.多窗口切换

    获取当前窗口句柄

    index_windows = driver.current_window_handle

    获取所有窗口句柄

    all_widows = driver.window_handles

    第n个窗口

    all_widows[n]

    切换窗口

    driver.switch_to.window(index_windows)

    11.警告框处理 (适用于alert、confirm、prompt)

    定位到警告框

    alert = driver.switch_to.alert

    获取警告框中的文字信息

    alert_text = alert.text

    接受警告框

    alert.accept()

    解散现有警告框

    alert.dismiss()

    在警告框输入文本(如果支持)

    alert.send_keys('xxx')

    12.下拉框处理

    WebDriver提供了Select类来处理下拉框
    Select类用于定位'select'标签

    <select id="nr">
      <option value="10">10条</option>
      <option value="20">20条</option>
      <option value="30">30条</option>
      <option value="40">40条</option>
    </select>
    
    from selenium.webdriver.support.select import Select
    
    sel = driver.find_element(By.XPATH, '//select[@id='nr']')
    

    通过value值定位下拉选项

    Select(sel).select_by_value('20')

    通过text值定位下拉选项

    Select(sel).select_by_visible_text('40条')

    通过选项顺序定位选项(从0计数)

    Select(sel).select_by_index(0)

    13.上传文件

    input上传,直接定位元素,输入文件路径名称即可

    ele.send_keys(file_path)

    插件上传:一般指Flash、Javascript、Ajax等技术实现上传功能

    pass

    14.下载文件

    pass

    15.窗口截图

    driver.save_screenshot(file_path)

    16.关闭窗口

    关闭当前窗口

    driver.close()

    关闭浏览器

    driver.quit()

  • 相关阅读:
    《JavaScript高级程序设计》读书笔记(十):本地对象Date
    JavaScript计算字符串中每个字符出现的次数
    JavaScript单元测试ABC
    ASP.NET MVC3 AJAX 上传图片示例
    canvas标签的width和height以及style.width和style.height的区别
    分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
    《JavaScript高级程序设计》阅读笔记(十四):继承机制的实现
    从此不再惧怕URI编码:JavaScript及C# URI编码详解
    Levenshtein算法的JavaScript实现
    《JavaScript高级程序设计》阅读笔记(十五):浏览器中的JavaScript
  • 原文地址:https://www.cnblogs.com/yywmz/p/13967594.html
Copyright © 2011-2022 走看看