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()来截取当前窗口
    }}

  • 相关阅读:
    BZOJ3575 [Hnoi2014]道路堵塞
    BZOJ4456/UOJ184 [Zjoi2016]旅行者
    BZOJ4455/UOJ185 [Zjoi2016]小星星
    BZOJ1036 [ZJOI2008]树的统计Count
    BZOJ2594 [Wc2006]水管局长数据加强版
    BZOJ3669/UOJ3 魔法森林(LCT)
    BZOJ1012:[JSOI2008]最大数
    洛谷【P1175】表达式的转换
    HDU4699:Editor
    BZOJ3039:玉蟾宫
  • 原文地址:https://www.cnblogs.com/taidou/p/8344817.html
Copyright © 2011-2022 走看看