selenium 常用API

    • 引入
      • from selenium import webdriver
      • from selenium.webdriver.common.action_chains import ActionChains 
      • from selenium.webdriver.common.keys import Keys 
      • from selenium.webdriver.support.wait import WebDriverWait 
      • from selenium.webdriver.support import expected_conditions as EC 
      • from time import sleep
      • import os
    • 创建一个浏览器
      • dr = webdriver.Chrome()
    • 访问某个网址
      • dr.get('https://www.baidu.com')
    • 设置浏览器的宽高
      • dr.set_window_size(200, 200)  # 设置浏览器的宽高为200px
    • 设置浏览器全屏、最小化
      • dr.maximize_window()                # 全屏
      • dr.minimize_window()              # 最小化
    • 网页前进、后退
      • dr.forward()                                   # 前进
      • dr.back()                                     # 后退
    • 关闭
      • dr.close()                                       # 关闭标签页
      • dr.quit()                                         # 关闭浏览器
    • 简单元素操作
      • 元素.clear()                                   # 清除元素输入框的内容
      • 元素.send_keys('hello')                 # 在元素输入框中输入hello
      • 元素.click()                                     # 点击某元素按钮
    • 常用API
      • 表单元素.submit()                        # 用于form元素,模拟按下enter键来替代点击操作
      • 元素.size()                                    # 获取元素的尺寸大小
      • 元素.text                                      # 获取元素的文本内容
      • 元素.get_attribute('name')           # 获取元素的name属性值
      • 元素.is_displayed()                      # 判断元素是否可见,返回布尔值
    • 鼠标事件(引入ActionChains)
      • ActionChains(dr).context_click(元素).perform()                               # 右键
      • ActionChains(dr).double_click(元素).perform()                                 # 双击
      • ActionChains(dr).move_to_element(元素).perform()                         # 鼠标悬停
      • ActionChains(dr).drag_and_drop(source, target).perform()               # 将source元素拖拽到target元素位
      • ActionChains(dr).drag_and_drop(source, x, y).perform()                    # 将source元素相对于自己的位置拖拽
    • 键盘事件(引入Keys )
      • driver.find_element_by_id("kw").send_keys("seleniumm")                 # 输入内容selenium
      • driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)      # 退格
      • driver.find_element_by_id("kw").send_keys(Keys.SPACE)                # 空格键
      • driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')        # 全选输入框内容
      • driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')        # 剪切输入框内容
      • driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')        # 粘贴内容到输入框
      • driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')        # 复制选中的内容
      • driver.find_element_by_id("su").send_keys(Keys.ENTER)                  # 回车操作代替点击按钮
      • driver.find_element_by_id("su").send_keys(Keys.ESCAPE)                # 退出按钮
      • webdriver.ActionChains(browser).send_keys(Keys.ESCAPE).perform() # 退出按钮browser = webdriver.Chrome
      • driver.find_element_by_id("su").send_keys(Keys.TAB)                        # 制表键
      • driver.find_element_by_id("su").send_keys(Keys.F1)                        # 按下键盘F1
    • 元素等待(引入WebDriverWait、expected_conditions)
      • 显示等待
        • WebDriverWait(self.dr, 5, 0.3).until(EC.presence_of_element_located((By.ID, "msg")))                      # 等待5秒钟,每隔0,3秒钟询问一次,直到出现id为msg的元素
        • WebDriverWait(dr, 5, 0.1).until_not(ec.text_to_be_present_in_element((By.CSS_SELECTOR, '#chaptercontent'),U'正在转码,请稍后......'))            # 等待5秒钟,每隔0.1秒询问一次,直到id为chaptercontent的元素文本内容不是“正在转码,请稍后......”
        • title_is                                                                                    # 用于判断标题是否 xx 
        • title_contains                                                                         # 用于判断标题是否包含 xx 信息 
        • presence_of_element_located                                              # 元素是否存在 
        • visibility_of_element_located                                                # 元素是否可见 
        • visibility_of                                                                             # 是否可见 
        • presence_of_all_elements_located                                        # 判断一组元素的是否存在 
        • text_to_be_present_in_element                                               # 判断元素是否有 xx 文本信息 
        • text_to_be_present_in_element_value                                     # 判断元素值是否有 xx 文本信息 
        • frame_to_be_available_and_switch_to_it                                   # 框架是否可用,并切换到该框架
        • invisibility_of_element_located                                                # 判断元素是否隐藏 
        • element_to_be_clickable                                                           # 判断元素是否点击,它处于可见和启动状态 
        • staleness_of                                                                                # 等到一个元素不再是依附于 DOM 
        • element_to_be_selected                                                                 #被选中的元素 
        • element_located_to_be_selected                                                   # 一个期望的元素位于被选中 
        • element_selection_state_to_be                                                     # 一个期望检查如果给定的元素被选中 
        • element_located_selection_state_to_be                                            # 期望找到一个元素并检查是否选择状态 
        • alert_is_present                                                                                 # 预期一个警告信息 
      • 隐式等待
        • dr.implicitly_wait(10)                                                                      # 等待10秒钟,若提前结束就停止等待,若超时就抛出异常
      • sleep(引出sleep)
        • time.sleep(10)                                                                                           # 傻傻的等待10秒钟,不管是否提前结束
    • 框架的切换
      • dr.switch_to.frame("if")                                                                               # 切换到id或者name为if的框架
      • dr.switch_to.frame(frame)                                                                          # 若无法用name 或者 id定位到框架,则可以先用其他方式定位获取到框架元素,再将这个元素传入switch_to..frame()里
      • dr.switch_to_default.content()                                                                    #  切换到默认的框架中
    • 窗口的切换
      • dr.current_window_handle                                                                        # 获取当前窗口的句柄,切换到js弹框上
      • dr.window_handles                                                                         # 获取所有窗口的句柄
      • dr.switch_to.window()                         # 切换到某个窗口
    • 警告框  
      • dr.switch_to.alert                                                                                       # 切换到弹框(alert、prompt、confirm)
      • dr.switch_to.alert.text                                                                                 # 获取弹框的文本内容
      • dr.switch_to_alert.accept()                                                                 # 切换到弹框并且点击“确认”
      • dr.switch_to.alert.dismiss                                                                           # 切换到弹框并且点击“取消”
      • dr.switch_to.alert.sendkeys('hello')                                                             # 切换到弹框并且在输入框中输入‘hello’
    • 上传文件(引入 os)
      • file = os.path.abspath('1.jpg')                                                                      # 相对于该py文件的图片对象
      • dr.find_element(By.ID, 'upfile2').send_keys(file)                                        # 将图片传入id为upfile2的元素里
    • 调用js
      • js="var q=document.documentElement.scrollTop=10000"                          # 编写js代码:将页面的滚动条向下移动10000px
        dr.execute_script(js)                                                                                        # 执行编写好的js代码
    • 窗口截图
      • dr.get_screenshot_as_file("D:\\baidu_error.jpg")                                         # 将当前页面可视区截图并存放命名为D:\\baidu_error.jpg
posted @ 2019-11-17 21:49  小贝书屋  阅读(778)  评论(0编辑  收藏  举报