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

原文地址:https://www.cnblogs.com/taidou/p/8344817.html