zoukankan      html  css  js  c++  java
  • WebDriver API基础篇:

    *WebDriver API基础:

      WebDriver API 属于Selenium体系中设计出来的操作浏览器的一套API。

    1. 元素定位:

      WebDriver提供了八种元素定位的方法,在Python语言中,对应的方法如下:

      

    find_element_by_id() find_element_by_name()
    find_element_by_class_name() find_element_by_tag_name()
    find_element_by_link_text() find_element_by_partial_link_text()
    find_element_by_xpath() find_element_by_css_selector()

    1. WebDriver提供八种元素定位法: 通过本身属性进行定位


    a. find_element_by_id(); ID属性在HTML中强制唯一
    b. find_element_by_name(); 通过name属性来定位元素(name属性可以不唯一)
    c. find_element_by_class_name(); 通过class属性来定位元素
    d. find_element_by_tag_name();

    e. find_element_by_link_text(); 专门用来定位文本链接,通过元素标签对之间的文本信息来定位元素
    f. find_element_by_partial_link_text(); 是对link定位的一种补充,通过标签对之间的部分文本信息来定位元素
    以标签名为层级关系的定位方式/通过相关元素来查找最终元素的方式
    g. find_element_by_xpath(); 使用XPath语言来定位元素,XPath主要用标签名的层级关系来定位元素的绝对路径
    Eg. Find_element_by_xpath("//*[@class='bg s_btn']")

    h. Find_element_by_css_selector();

    2. 简单元素操作


    a. Clear() 清除文本
    b. Send_keys() 模拟按键输入
    c. Click() 模拟鼠标的单击操作
    d. Submit() 提交元素,有时可以和click互换来使用,单submit()的应用范围远不及click()广泛


    i. size 返回元素的尺寸
    ii. text 获取元素的文本
    iii. get_attribute(name) 获得属性值
    iv. is_displayed() 设置该元素是否用户可见


    3. 鼠标事件


    a. 关于鼠标操作的常用方法封装在ActionChains类:


    i. perform() 执行所有ActionChains中存储的行为(可理解为对整个操作的提交动作,最后都要执行)
    ii. context_click() 右击
    iii. double_click() 双击
    iv. drag_and_drop(source,target) 拖动
    v. move_to_element() 鼠标悬停


    4. 键盘事件


    a. Keys()类提供了键盘上几乎所有按键的方法


    i. send_keys() 模拟键盘输入
    eg. driver.find_element_by_id("kw").send_keys(Keys.SPACE) 空格键

    5. 获得验证信息


    a. title:用于获得当前页面的标题
    b. current_url:用户获得当前页面的URL
    eg. user = driver.find_element_by_id('spanUid').text

    print(user) --->输出username@126.com

    6. 设置元素等待


    a. 显示等待


    i. webDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=none),webDriverwait()一般由until()和until_not()方法配合使用
    Eg. driver = webdriver.firefox()
    element = WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,"kw")))

    b. 隐式等待


    i. webDriver提供了implicitly_wait()方法来实现隐式等待,默认设置为0.


    c. Sleep()休眠方法


    i. Sleep()方法是由Python的time模块提供


    7. 定位一组元素,与而定位单个元素的方法类似,唯一区别在单词element后面多了一个s表示复数。应用场景:批量操作元素,例如勾选页面上所有的复选框; 先获取一组元素,再从这组对象中过滤出需要操作的元素(例如定位出页面上所有的checkbox,然后选择其中的一个进行操作)


    a. len()方法可以用来计算元素的个数,通过print()打印出计算结果
    b. pop()方法用于获取列表中的一个元素(默认为最后一个元素),并且返回该元素的值。
    eg. pop()或pop(-1): 默认获取一组元素中的最后一个

    pop(0): 默认获取一组元素中的第一个

    8. 多表单切换


    a. 对于frame/iframe表单嵌套页面上的元素无法直接定位:


    i. 可通过switch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面中
    ii. switch_to.parent_content()方法跳出当前以及表单
    iii. switch_to.default_content()跳回最外层页面


    9. 多窗口切换


    a. WebDriver提供了switch_to.window()方法可以实现不同的窗口之间切换
    b. current_window_handle(): 获得当前窗口句柄
    c. window_handles: 返回所有窗口的句柄到当前会话
    d. Close():可以关闭其中的某个窗口


    10. 警告框处理


    a. switch_to_alert()方法定位到alert/confirm/prompt


    i. text: 返回alert/confirm/prompt中的文字信息
    ii. accept(): 接受现有警告框
    iii. dismiss(): 解散现有警告框
    iv. send_keys(keysToSend):发送文本至警告框


    11. 上传文件


    a. 通过send_keys()指定文件路径的方式实现文件上传
    b. 从网站上下载AutoIt


    12. 下载文件


    a. browser.download.folderlist 设置成0代表下载到浏览器默认下载路径,设置成2则可以保存到指定目录
    b. browser.download.manager.showWhenStarting 是否显示开始:true为显示,false为不显示
    c. browser.download.dir 用于指定所下载文件的目录。os.getcwd() 函数不需要传递参数,用于返回当前的目录
    d. browser.helperApps.neverAsk.saveToDisk

    13. 操作cookie
    Webdriver操作cookie的方法


    a. get_cookies() 获得所有cookie信息
    b. get_cookie(name) 返回字典的key为“name”的cookie信息
    c. add_cookie(cookie_dict) 添加cookie。“cookie_dict”指字典对象,必须有name忽然value值
    d. delete_cookie(name,optionsString) 删除cookie信息。“name”是要删除的cookies的名称,“optionsString”是该cookie的选项,目前支持的选项包括"路径","域"
    e. delete_all_cookies() 删除所有cookie信息


    14. 调用JavaScript


    a. WebDriver提供execute_script()方法来执行JavaScript代码
    b. window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置(第一个参数:水平的左间距;第二个参数:垂直的上边距)


    15. 窗口截图


    a. webdriver提供了截图函数get_screenshot_as_file()来截取当前窗口
    }}

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/taidou/p/8344817.html
Copyright © 2011-2022 走看看