zoukankan      html  css  js  c++  java
  • python+selenium自动测试之WebDriver的常用API(基础篇一)

    基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里

    一、对浏览器操作 

     1 driver = webdriver.Chrome()  # 初始化chrome
     2 driver1 = webdriver.Firefox()  # 初始化Firefox
     3 driver2 = webdriver.Ie()  # 初始化IE
     4 driver3 = webdriver.Edge()  # # 初始化Edge
     5 driver.get("https://www.baidu.com")  # 打开url
     6 driver.capabilities['version']  # 获取浏览器version
     7 driver.maximize_window()  # 将浏览器最大化显示
     8 driver.set_window_size(480, 800)  # 设置浏览器宽480、高800显示
     9 driver.back()  # 浏览器后退
    10 driver.forward()  # 浏览器前进
    11 driver.title  # 获取当前页面的title
    12 driver.current_url  # 获取当前页面的URL
    13 driver.current_window_handle  # 获取当前浏览器窗口的句柄
    14 driver.close()  # 关闭浏览器,关闭当前浏览器,即最上层那个
    15 driver.quit()  # 关闭webdriver打开的所有浏览器
    各浏览器驱动下载地址,注意版本要对上
    Chrome:http://npm.taobao.org/mirrors/chromedriver/
    Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
    Firefox:https://github.com/mozilla/geckodriver/releases
    Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/
    IE:http://selenium-release.storage.googleapis.com/index.html

    二、页面元素定位

    最好使用id,name的方式定位元素,因为一般这两个元素是全局唯一的;有时候元素不唯一,推荐使用xpath或者css定位,根据个人喜好而定,不推荐使用class

     1 # return :WebElement - the element if it was found
     2 driver.find_element(By.ID, 'foo')
     3 driver.find_element_by_id("foo")
     4 driver.find_element_by_name("foo")
     5 driver.find_element_by_class_name("foo")
     6 driver.find_element_by_tag_name("h1")
     7 driver.find_element_by_link_text("Sign In")
     8 driver.find_element_by_partial_link_text("Sign")
     9 driver.find_element_by_xpath("//div/td[1]")
    10 driver.find_element_by_css_selector("#foo")
     1 # return: list of WebElement - a list with elements if any was found. An empty list if not
     2 driver.find_elements(By.CLASS_NAME, 'foo')
     3 driver.find_elements_by_id("foo")
     4 driver.find_elements_by_name("foo")
     5 driver.find_elements_by_class_name("foo")
     6 driver.find_elements_by_tag_name("h1")
     7 driver.find_elements_by_link_text("Sign In")
     8 driver.find_elements_by_partial_link_text("Sign")
     9 driver.find_elements_by_xpath("//div[contains(@class, 'foo')]")
    10 driver.find_elements_by_css_selector("#foo")

    三、页面元素操作

     1 # 清除输入框的默认内容
     2 driver.find_element_by_id("foo").clear()
     3 # 输入框里输入context
     4 driver.find_element_by_id("foo").send_keys("context")
     5 # 单击一个按钮
     6 driver.find_element_by_id("foo").click()
     7 # 提交表单
     8 driver.find_element_by_id("foo").submit()
     9 # 返回元素的尺寸
    10 driver.driver.find_element_by_id("foo").size
    11 # 获取元素文本
    12 driver.find_element_by_id("foo").text
    13 # 返回元素的属性值,元素拥有的任意属性。如果是input的,可以通过获取value值获得当前输入的值
    14 driver.find_element_by_id("foo").get_attribute('value')
    15 # 返回元素的结果是否可见,返回结果为True或False
    16 driver.find_element_by_id("foo").is_displayed()

    四、鼠标事件

     1 from selenium.webdriver.common.action_chains import ActionChains 
     2 # 定位鼠标元素
     3 mouse = driver.find_element_by_id("foo")
     4 # 对定位到的元素执行鼠标右键操作
     5 ActionChains(driver).context_click(mouse).perform()
     6 # 对定位到的元素执行鼠标双击操作
     7 ActionChains(driver).double_click(mouse).perform()
     8 # 对定位到的元素执行鼠标移动到上面的操作
     9 ActionChains(driver).move_to_element(mouse).perform()
    10 # 对定位到的元素执行鼠标左键按下的操作,注意这里是点击下去不释放
    11 ActionChains(driver).click_and_hold(mouse).perform()
    12 
    13 # 鼠标拖放操作
    14 element = driver.find_element_by_id("foo1")  # 定位元素的原位置 
    15 target = driver.find_element_by_id("foo2")  # 定位元素要移动到的目标位置 
    16 ActionChains(driver).drag_and_drop(element, target).perform()  # 执行元素的移动操作

    五、键盘事件

     1 from selenium.webdriver.common.keys import Keys
     2 
     3 driver.find_element_by_id("foo").send_keys(Keys.BACK_SPACE)  # 删除键(BackSpace)
     4 driver.find_element_by_id("foo").send_keys(Keys.SPACE)  # 空格键(Space)
     5 driver.find_element_by_id("foo").send_keys(Keys.TAB)  # 制表键(Tab)
     6 driver.find_element_by_id("foo").send_keys(Keys.ESCAPE)  # 回退键(Esc)
     7 driver.find_element_by_id("foo").send_keys(Keys.ENTER)  # 回车键(Enter)
     8 driver.find_element_by_id("foo").send_keys(Keys.DELETE)  # 删除键(Delete)
     9 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'a')  # 全选(Ctrl+A)
    10 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'c')  # 复制(Ctrl+C)
    11 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'x')  # 剪切(Ctrl+X)
    12 driver.find_element_by_id("foo").send_keys(Keys.CONTROL, 'v')  # 粘贴(Ctrl+V)
  • 相关阅读:
    浅谈三层模式
    javascript的全局变量
    BZOJ 3668 NOI2014 起床困难综合症 贪心
    调试经验--图像
    Mac OS X 10.10 执行 Eclipse 提示须要安装 Java
    ubuntuOS
    BLOB存储图片文件二进制数据是非对错
    API经济产业
    python模块目录文件后续
    MongoDB命令
  • 原文地址:https://www.cnblogs.com/andrew209/p/10088945.html
Copyright © 2011-2022 走看看