selenium.webdriver api

本文详细介绍使用Selenium WebDriver进行Web自动化测试的各种技巧,包括元素定位、浏览器操作、鼠标键盘事件模拟、等待策略及多窗口处理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、元素定位

 

1.id

find_element_by_id()

find_element(By.ID,””)

 

2.name

find_element_by_name()

find_element(By.NAME,””)

 

3.xpath

 find_element_by_xpath(“//标签[@元素=‘’]”)

find_element(By.XPATH,’’)

 

4.class

 find_element_class_name()

find_element(By.CLASS_NAME,’’)

 

5.link_text

 find_element_by_link_text()

 find_element(By.LINK_TEXT,’’)

 

6.css_selecter

 find_element_by_css_selecter(“标签 ./#”)

 find_element(By.CSS_SELECTER,””)

 

7.tag_name

  find_element_by_tag_name(“标签”)

  find_element(By.TAG_NAME,”标签”)

8.partial_link_text

  find_element_by_partial_link_text(“关键字”)

  find_element(By.PARTIAL_LINK_TEXT,’关键字’)

 

一-1、一组元素定位

find_elements_by_id()

find_elements_by_name()

find_elements_by_class_name()

find_elements_by_tag_name()

find_elements_by_link_text()

find_elements_by_partial_link_text()

find_elements_by_xpath()

find_elements_by_css_selector()

 

# 选择页面上所有的tag name 为input 的元素

inputs =driver.find_elements_by_tag_name('input')

#然后从中过滤出tpye 为checkbox的元素,单击勾选

for i ininputs:

if i.get_attribute('type') == 'checkbox':

i.click()

pop() 函数用于获取列表中的一个元素(默认为最后一个元素),并且返回该元素

的值 pop(0)获取第一个

二、操作浏览器界面

 

1、控制浏览器大小

  set_window_size(width,height)

2.全屏模式

  maxmime_window()

3.前进一页

forward()

4.后退一页

  back()

5.页面主题

title

 

6.当前页

current_url

三.webelment常用接口方法

1.send_keys()  input

2.submit()  提交表单

3.size 返回元素的尺寸。

4.text 获取元素的文本。

5.get_attribute(name)获得属性值。

5.is_displayed() 设置该元素是否用户可见

 

四、鼠标事件

   element =driver.find_element_by_name("xxx")

1. ActionChains执行所有ActionChains 中存储的行为

2. ActionChains(driver).context_click(element).perform()右击 

3.ActionChains(driver).double_click(element).perform() 双击

4.

#定位元素的源位置

element =driver.find_element_by_name("xxx")

#定位元素要移动到的目标位置

target =driver.find_element_by_name("xxx")

#执行元素的拖放操作

ActionChains(driver).drag_and_drop(element,target).perform()拖动

5.ActionChains(driver).move_to_element(element).perform() 鼠标悬停

 

五、键盘事件

1.send_keys(Keys.BACK_SPACE)删除键(BackSpace)

2.send_keys(Keys.SPACE)空格键(Space)

3.send_keys(Keys.TAB)制表键(Tab)

4.send_keys(Keys.ESCAPE)回退键(Esc)

5.send_keys(Keys.ENTER)回车键(Enter)

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

7.send_keys(Keys.CONTROL,'c')复制(Ctrl+C)

8.send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)

9.send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)

10.send_keys(Keys.F1)键盘F1

……

21.send_keys(Keys.F12)键盘F12

 

 

六、等待事件

1.显式等待

element = WebDriverWait(driver,5,0.5).until(

EC.presence_of_element_located((By.ID,"kw")))

element.send_keys('selenium')

 

 

EC.title_is用于判断标题是否xx。

EC.title_contains用于判断标题是否包含xx 信息。

EC.presence_of_element_located元素是否存在。

EC.visibility_of_element_located元素是否可见。

EC.visibility_of是否可见

EC.presence_of_all_elements_located判断一组元素的是否存在

EC.text_to_be_present_in_element判断元素是否有xx 文本信息

EC.text_to_be_present_in_element_value判断元素值是否有xx 文本信息

EC.frame_to_be_available_and_switch_to_it表单是否可用,并切换到该表单。

EC.invisibility_of_element_located判断元素是否隐藏

EC.element_to_be_clickable判断元素是否点击,它处于可见和启动状态

EC.staleness_of等到一个元素不再是依附于DOM。

EC.element_to_be_selected被选中的元素。

EC.element_located_to_be_selected一个期望的元素位于被选中。

EC.element_selection_state_to_be一个期望检查如果给定的元素被选中。

EC.element_located_selection_state_to_be期望找到一个元素并检查是否选择状态

EC.alert_is_present预期一个警告信息

 

2.隐式等待

implicitly_wait(10)

 

3.sleep

sleep()

 

7.多表单切换

1.切换表单

element=find_element_by_xx(“”)

switch_to.frame(“element”)

2.返回上一个表单

switch_to.deault_content()

8、多窗口切换

获得原始页面的句柄

sreach_windows=driver.current_window_handle

多窗口之后

#获得当前所有打开的窗口的句柄

all_handles= driver.window_handles

#进入注册窗口

for handlein all_handles:

if handle!= sreach_windows:

driver.switch_to_window(handle)

print 'nowregister window!'

driver.find_element_by_name("account").send_keys('username')

driver.find_element_by_name('password').send_keys('password')

#……

#进入搜索窗口

for handlein all_handles:

if handle== sreach_windows:

driver.switch_to_window(handle)

print 'nowsreach window!'

driver.find_element_by_id('TANGRAM__PSP_2__closeBtn').click()

driver.find_element_by_id("kw").send_keys("selenium")

driver.find_element_by_id("su").click()

time.sleep(5)

 

9.弹框处理

#接收弹窗

switch_to.alert().accept()

.text 返回alert/confirm/prompt 中的文字信息。

               .accept 点击确认按钮。

               .dismiss 点击取消按钮,如果有的话。

               .send_keys 输入值,这个alert\confirm 没有对话框就不能用了,不然会报错。

 

10.文件上传

1.send_keys(“本地路径”)

2. AutoIt实现上传    windows系统

 

11.下载文件

 

 

12.操作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 信息

 

13.调用js

js =“windows.scrollTo(400,400)”

driver.execute_script(js)

 

13.窗口截图

get_screenshot_as_file()

try:

driver.find_element_by_id('kw_error').send_key('selenium')

driver.find_element_by_id('su').click()

except :

driver.get_screenshot_as_file("D:\\baidu_error.jpg")//截图保存地址

 

14.验证码处理

#将用户名密码写入浏览器cookie

driver.add_cookie({'name':'Login_UserNumber','value':'username'})

driver.add_cookie({'name':'Login_Passwd','value':'password'})

#再次访问xx 网站,将会自动登录

driver.get("http://www.xx.cn/")

 

或者设置一个万能验证码

 

 

unittest

#必须要继承TestCase类
class CountTest(unittest.TestCase):

if __name__ =='__main__':
    #unittest.main()
    #执行顺序 a-z,A-Z,0-9

#测试套件 ----》运行测试的集合
    suit = unittest.TestSuite()
   suit.addTest(CountTest("test_add2"))
   #suit.addTest(CountTest("test_add2"))
    runner = unittest.TextTestRunner()
    runner.run(suit)

 

unittest.TestCase

一个TestCase 的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试

前准备环境的搭建(setUp),实现测试过程的代码(run),以及测试后环境的还原(tearDown)。元测试(unit

test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个

功能进行验证。

 

unittest.TestSuite

对一个功能的验证往往是需要多测试用例的,可以把多的测试用例集合在一起执行,这就产生了测试

套件TestSuite 的概念,它用来组装单个测试用例,而且TestSuite 也可以嵌套TestSuite。

可以通过addTest 加载TestCase 到TestSuite 中,再返回一个TestSuite 实例。

 

 

 

test runner

unittest.TextTestRunner 是来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果

会保存到TextTestResult 实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。

 

test fixture

对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖TestCase 的setUp()和tearDown()

方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown

的过程很重要,要为以后的TestCase 留下一个干净的环境。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值