zoukankan      html  css  js  c++  java
  • Webdriver API之操作(二)

    一、窗口截图

    dirver.get_screenshot_as_file("D:\report\image\xxx.jpg")

     

    二、关闭窗口

    dirver.close()  #关闭当前窗口

    driver.quit()  #退出浏览器

     

    三、操作Cookie

    有时候我们需要验证浏览器中是否存在某个 cookie,因为基于真实的 cookie 的测试是无法通过白盒和 集成测试完成的。WebDriver 提供了操作 Cookie 的相关方法可以读取、添加和删除 cookie 信息。
    webdriver 操作 cookie 的方法有:

     get_cookies()       获得所有 cookie 信息

     get_cookie(name)     返回有特定 name 值有 cookie 信息

     add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值

     delete_cookie(name)   删除特定(部分)的 cookie 信息

     delete_all_cookies()   删除所有 cookie 信息 下面通过 get_cookies()来获取当前浏览器的 cookie 信息。

    1 from selenium import webdriver 
    2 
    3 driver = webdriver.Chrome() driver.get("http://www.youdao.com")
    4 
    5 # 获得cookie信息 
    6 cookie= driver.get_cookies() 
    7 #将获得cookie的信息打印 
    8 print cookie
    9 driver.quit()

     

     

    四、验证码处理

    1. 让开发去掉验证码

    2. 让开发设置万能验证码

    3. 验证码识别技术(光学字符识别)

    4. 记录cookie

     1 #访问xx网站 
     2 driver.get("http://www.xx.cn")
     3 
     4 #将用户名密码写入浏览器cookie
                      #username        1@1.com 5 driver.add_cookie({'name':'Login_UserNumber', 'value':'username'})
                      #password        111111
    6 driver.add_cookie({'name':'Login_Passwd', 'value':'password'}) 7 8 #再次访问xx网站,将会自动登录 driver.get("http://www.xx.cn/") 9 time.sleep(3) 10 .... 11 driver.quit()

     

     五、调用JavaScript

    调用js一般处理有:控制滚动条,富文本,把隐藏的元素显示出来 

    1. 控制滚动条

    js = "window.scrollTo(100,450);"
    browser.execute_script(js)

    2. 用js写入富文本

    js = "document.getElementById('content_ifr').contentWindow.document.body.innerHTML=''你好,我是富文本!"
    browser.execute_script(js)

    3. 把隐藏的元素显示出来

    六、处理HTML5视频

    。。。。

     

    七、上传文件

    1. send_keys实现上传

    (1)普通上传:普通的附件上传都是将本地文件的路径作为一个值放 input 标签中,通过 form 表单提交的时候将这个值提交给服务器。即可以将其看作是一个输入框,通过send_keys()指定本地文件路径的方式实现上传。

    1 #打开上传功能页面 
    2 file_path = 'file:///' + os.path.abspath('upfile.html') driver.get(file_path)
    3 
    4 #定位上传按钮,添加本地文件 driver.find_element_by_name("file").send_keys('D:\upload_file.txt')
    View Code

     

    (2)插件上传:一般是指基于 Flash 与 JavaScript 或 Ajax 等技术所实现的上传功能或插件。

     

    2. Autolt实现上传

    它是一个类似BASIC脚本语言的免费软件,被设计用来进行Windows GUI(图形用户界面)的自动化测试。利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。

    AutoItWindows Info 用于帮助我们识 Windows 控件信息。

    CompileScript to.exe 用于将 AutoIt 生成 exe 执行文件。
    RunScript     用于执行 AutoIt 脚本。
    SciTE Script Editor 用于编写 AutoIt 脚本。

    1 #点击打开上传窗口 
    2 driver.find_element_by_name("file").click() 
    3 
    4 #调用upfile.exe上传程序 
    5 os.system("D:\upfile.exe")
    6 driver.quit()

     

    八、下载文件

    Webdriver允许我们设置默认的文件下载路径。

    只针对Firefox,所以也可以参考使用Autoit工具(上看)

     1 #coding=utf-8 
     2 from selenium import webdriver 
     3 import os
     4 
     5 fp = webdriver.FirefoxProfile()
     6 # browser.download.folderList设置成 0 代表下载到浏览器默认下载路径;设置成 2 则可以保存到指定目录
     7 fp.set_preference("browser.download.folderList",2)
     8 
     9 #browser.download.manager.showWhenStarting
    10 是否显示开始,Ture 为显示,Flase 为不显示
    11 fp.set_preference("browser.download.manager.showWhenStarting",False) 
    12 
    13 #browser.download.dir,用于指定你所下载文件的目录。os.getcwd() 该函数不需要传递参数,用于返回当前的目录。
    14 fp.set_preference("browser.download.dir", os.getcwd()) 
    15 
    16 # browser.helperApps.neverAsk.saveToDisk
    17 指定要下载页面的 Content-type 值,“application/octet-stream”为文件的类型。HTTP Content-type 常 用对照表:http://tool.oschina.net/commons
    18 
    19 fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream") 
    20 
    21 #下载文件的类型
    22 driver = webdriver.Firefox(firefox_profile=fp) 
      driver.get("http://pypi.Python.org/pypi/selenium")
      driver.find_element_by_partial_link_text("selenium-2").click()

     

  • 相关阅读:
    解决 src/MD2.c:31:20: fatal error: Python.h: No such file or directory安装包错误
    Java 保存对象到文件并恢复 ObjectOutputStream/ObjectInputStream
    Elasticsearch安装配置和测试
    [知识图谱] 环境配置:Java8 + Maven3 + HBase + Titan
    Java8安装配置
    MongoDB 安装、运行、使用、数据恢复
    Java堆空间溢出解决方法 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    服务器重装和配置:Ubuntu16.04 + Anaconda3 + GTX1080驱动 + CUDA8 + cuDNN + 常用工具安装
    [Linux] 输出文件的指定行
    [Linux] sed命令使用之在文件中快速删除/增加指定行
  • 原文地址:https://www.cnblogs.com/hlphlp/p/6504887.html
Copyright © 2011-2022 走看看