WebDriver对象的一些方法

WebDriver对象的一些方法

1. driver.title #获取当前页面左上角的title

2. driver.current_url #获取当前页面的url

3. driver.get_screenshot_as_file('路径+文件名') --关键信息人工复检, 特别是测试不通过时, 或者定位问题有时也需要

现在只能截取整个页面的,不能只截取某个元素的。

4.driver.refresh() #刷新

5.drvier.forward() #前进

6.driver.back() #后退

7.driver.quit() #退出驱动并关闭所有窗口,这个在任务管理器看,驱动的进程也被干掉了。 

8.driver.close() #关闭当前窗口

9.driver.current_window_handle #句柄

10.driver.page_source #返回页面源码

11.driver.maximize_window() #最大化窗口:

12.driver.set_window_size(600,800) #设置窗口参数:

 

切换窗口

循环遍历 driver.window_handles (保存了当前自动化打开的所有窗口)

方法切入新窗口 driver.switch_to.window(handle)

检查该窗口的特点,是否为要切入的那个

mainWindow = driver.current_window_handle //保存主窗口的hanlde

for handle in driver.window_handles:

    driver.switch_to.window(handle)

    if "百度" in driver.title:

        break //切换到百度窗口

在新窗口的操作代码

driver.close() //关闭百度窗口 quit关闭整个浏览器和浏览器驱动,所有这里要用close

driver.switch_to.window(mainWindow) //返回原来的主窗口


 

弹出对话框(属于浏览器原生提供的,不是HTML的一部分, F12查看不出元素)

有三种

alert--一般只有确定按钮

confirm -- 一般有确定和取消按钮

prompt--要输入,要用户提供一些信息的

操作方法:

driver.switch_to.alert.accept() #点击OK

driver.switch_to.alert.text #获取alter对话框中的文本

 

driver.switch_to.confirm.accept()

driver.switch_to.confirm.dismiss() #点击取消

driver.switch_to.confirm.text

 

driver.switch_to.prompt.accept()

driver.switch_to.prompt.dismiss()

driver.switch_to.prompt.text

driver.switch_to.prompt.send_keys('XXX') #输入内容

 

driver.switch_to.alert返回的就是一个alter对象, 也可以这么写

alter = driver.switch_to.alert

alter.accept()

 

怎么判断是上面的这三种窗口: F12, 看是否能侦察出元素

 

 

自动化上传文件:

方法1:

直接发送键盘消息给 当前应用程序

前提是浏览器必须是当前应用

操作不是驱动浏览器完成的,而是直接驱动win32来完成的。 所以当前浏览器必须是当前应用

import win32com.client

shell = win32com.client.Dispatch('WScript.Shell')

shell.SendKeys(r"d:\tmp\aaa.png"+'\n') #\n相当于点击回车

 

方法2:定位到元素后直接send_keys

driver.find_element_by_class_name('soutu-btn').click()

driver.find_element_by_class_name('upload-pic').send_keys(r"E:\笔记\wechat.png")

 

易消失的元素查看技巧: (鼠标移到该元素上面才会出现,鼠标移开就会消失)

在Console里输入javaScript代码

setTimeout(function(){debugger;},5000) 5S后,把界面冻住,再去查看页面元素

 

直接copy css/xpath的缺点:

如果元素ID靠的太远,生成的路径比较长 这样被修改的可能行更大(如中间的某个元素被改变,路径就失效了), 代码的健壮性差。

 

异常捕获,确保Chrome进程退出,(有遇到升级后某个元素失效,第二天机器被chrome占领的情况)

将代码放在try里, finally中有quit()

 

滚动条

1. 将滚动条拖到最底部

js = "var action=document.documentElement.scrollTop=10000"

driver.execute.script(js)

scrollTop=是指滚动条距离顶部的距离, 设置很大,最底部, 设置为0, 顶部。

 

2. 将滚动条拖到最顶部

js = "var action=document.documentElement.scrollTop=0"

driver.execute.script(js)

 

  3.driver.set_window_size(600, 600)

 

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

driver.execute_script(js)

 

Selenium定位方式:

id定位:find_element_by_id()

name定位:find_element_by_name()

class定位:find_element_by_class()

tag定位:find_element_by_tag_name()

link定位:find_element_by_link_text()

partial link 定位: find_element_by_partial_link_text()

xpath定位

css selector定位

 

提交表单(相当于回车) .submit()

 

鼠标事件:

from selenium.webdriver.common.action_chains import ActionChains

.perform() 执行所有ActionsChains中存储的行为

context_click() 右击

double_click() 双击

drag_and_drop(source,target) 鼠标拖放

move_to_element() 鼠标悬停在一个元素上 (出现下拉列表框)

click_and_hold() 按下鼠标左键在一个元素上

 

left = driver.find_element_by_name("name")

ActionChains(driver).click_and_hold(left).perform

 

常用键盘事件:

from selenium.webdriver.common.keys import Keys

send_keys(Keys.BACK_SPACE)

send_keys(Keys.SPACE)

send_keys(Keys.XXX) TAB,ESCPAE,ENTER,F1....

send_keys(Keys.CONTROL,'a') ---Ctrl+A 全选

 

cookie处理:

get_cookies():获得所有cookie信息

get_cookie(name):返回字典的key为“name”的cookie信息

add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值

delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”

delete_all_cookies():删除所有cookie信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WebDriver对象的一些方法

1. driver.title #获取当前页面左上角的title

2. driver.current_url #获取当前页面的url

3. driver.get_screenshot_as_file('路径+文件名') --关键信息人工复检, 特别是测试不通过时, 或者定位问题有时也需要

现在只能截取整个页面的,不能只截取某个元素的。

4.driver.refresh() #刷新

5.drvier.forward() #前进

6.driver.back() #后退

7.driver.quit() #退出驱动并关闭所有窗口

8.driver.close() #关闭当前窗口

9.driver.current_window_handle #句柄

10.driver.page_source #返回页面源码

11.driver.maximize_window() #最大化窗口:

12.driver.set_window_size(600,800) #设置窗口参数:

 

切换窗口

循环遍历 driver.window_handles (保存了当前自动化打开的所有窗口)

方法切入新窗口 driver.switch_to.window(handle)

检查该窗口的特点,是否为要切入的那个

mainWindow = driver.current_window_handle //保存主窗口的hanlde

for handle in driver.window_handles:

driver.switch_to.window(handle)

if "百度" in driver.title:

break //切换到百度窗口

在新窗口的操作代码

driver.close() //关闭百度窗口 quit关闭整个浏览器和浏览器驱动,所有这里要用close

driver.switch_to.window(mainWindow) //返回原来的主窗口

 

 

弹出对话框(属于浏览器原生提供的,不是HTML的一部分, F12查看不出元素)

有三种

alert--一般只有确定按钮

confirm -- 一般有确定和取消按钮

prompt--要输入,要用户提供一些信息的

操作方法:

driver.switch_to.alert.accept() #点击OK

driver.switch_to.alert.text #获取alter对话框中的文本

 

driver.switch_to.confirm.accept()

driver.switch_to.confirm.dismiss() #点击取消

driver.switch_to.confirm.text

 

driver.switch_to.prompt.accept()

driver.switch_to.prompt.dismiss()

driver.switch_to.prompt.text

driver.switch_to.prompt.send_keys('XXX') #输入内容

 

driver.switch_to.alert返回的就是一个alter对象, 也可以这么写

alter = driver.switch_to.alert

alter.accept()

 

怎么判断是上面的这三种窗口: F12, 看是否能侦察出元素

 

 

自动化上传文件:

方法1:

直接发送键盘消息给 当前应用程序

前提是浏览器必须是当前应用

操作不是驱动浏览器完成的,而是直接驱动win32来完成的。 所以当前浏览器必须是当前应用

import win32com.client

shell = win32com.client.Dispatch('WScript.Shell')

shell.SendKeys(r"d:\tmp\aaa.png"+'\n') #\n相当于点击回车

 

方法2:定位到元素后直接send_keys

driver.find_element_by_class_name('soutu-btn').click()

driver.find_element_by_class_name('upload-pic').send_keys(r"E:\笔记\wechat.png")

 

易消失的元素查看技巧: (鼠标移到该元素上面才会出现,鼠标移开就会消失)

在Console里输入javaScript代码

setTimeout(function(){debugger;},5000) 5S后,把界面冻住,再去查看页面元素

 

直接copy css/xpath的缺点:

如果元素ID靠的太远,生成的路径比较长 这样被修改的可能行更大(如中间的某个元素被改变,路径就失效了), 代码的健壮性差。

 

异常捕获,确保Chrome进程退出

将代码放在try里, finally中有quit()

 

滚动条

1. 将滚动条拖到最底部

js = "var action=document.documentElement.scrollTop=10000"

driver.execute.script(js)

scrollTop=是指滚动条距离顶部的距离, 设置很大,最底部, 设置为0, 顶部。

 

2. 将滚动条拖到最顶部

js = "var action=document.documentElement.scrollTop=0"

driver.execute.script(js)

 

  3.driver.set_window_size(600, 600)

 

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

driver.execute_script(js)

 

Selenium定位方式:

id定位:find_element_by_id()

name定位:find_element_by_name()

class定位:find_element_by_class()

tag定位:find_element_by_tag_name()

link定位:find_element_by_link_text()

partial link 定位: find_element_by_partial_link_text()

xpath定位

css selector定位

 

提交表单(相当于回车) .submit()

 

鼠标事件:

from selenium.webdriver.common.action_chains import ActionChains

.perform() 执行所有ActionsChains中存储的行为

context_click() 右击

double_click() 右击

drag_and_drop(source,target) 鼠标拖放

move_to_element() 鼠标悬停在一个元素上 (出现下拉列表框)

click_and_hold() 按下鼠标左键在一个元素上

 

left = driver.find_element_by_name("name")

ActionChains(driver).click_and_hold(left).perform

 

键盘事件:

from selenium.webdriver.common.keys import Keys

send_keys(Keys.BACK_SPACE)

send_keys(Keys.SPACE)

send_keys(Keys.XXX) TAB,ESCPAE,ENTER,F1....

send_keys(Keys.CONTROL,'a') ---Ctrl+A 全选

 

cookie处理:

get_cookies():获得所有cookie信息

get_cookie(name):返回字典的key为“name”的cookie信息

add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值

delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”

delete_all_cookies():删除所有cookie信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值