seyOrd

导航

webdriverAPI与键鼠操作_byseyOrd

常见的引入

  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 time import sleep

  import os

浏览器API

  创建一个浏览器驱动对象

    dr = webdriver.Chrome()

dr = webdriver.FireFox()

  访问某个网址

    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()                                         # 关闭浏览器

页面API

  源码

    dr.page_source()

  标题

    dr.title()

    title_is()                                    # 用于判断标题是否 xx 

    title_contains()                         # 用于判断标题是否包含 xx 信息 

  url地址

    dr.current_url()

元素API

  元素.clear()                                   # 清除元素输入框的内容

  元素.send_keys('hello')                 # 在元素输入框中输入hello

  元素.click()                                     # 点击某元素按钮

  表单元素.submit()                        # 用于form元素,模拟按下enter键来替代点击操作

  元素.size()                                    # 获取元素的尺寸大小

  元素.text()                                    # 获取元素的文本内容

  元素.get_attribute('name')           # 获取元素的name属性值

  元素.is_displayed()                      # 判断元素是否可见,返回布尔值

  元素.is_enabled()                        # 元素是否可操作

  元素.is_selected()                       # 元素是否选中

文件API

  截图

    dr.get_screenshot_as_file("D:\\baidu.jpg")                                         # 将当前页面可视区截图并存放

    dr.get_screenshot_as_png("D:\\baidu.png") 

    dr.get_screenshot_as_base64("D:\\baidu.png").encode('ascii')

  上传文件(引入 os)

    file = os.path.abspath('1.jpg')                                                                      # 相对于该py文件的图片对象

    dr.find_element(By.ID, 'upfile2').send_keys(file)                                        # 将图片传入id为upfile2的元素里

    

鼠标事件(引入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)                # 退出按钮

  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的元素文本内容不是“正在转码,请稍后......”

      显示等待的判断条件

        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)

    sleep(10)                                                                                           # 等待10秒钟,不管是否提前结束

 

窗口的切换事件

  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’

 

调用js事件

  js="var q=document.documentElement.scrollTop=10000"                          # 编写js代码:将页面的滚动条向下移动10000px
  dr.execute_script(js)                                                                                        # 执行编写好的js代码

 

 

posted on 2020-04-11 10:25  seyOrd  阅读(165)  评论(0)    收藏  举报