Webdriver之API详解(2)

前言

昨天笔者分享了selenium' webdriver api的用法,今天呢笔者接着上一篇文章继续分享,废话就不多说了,直接开始吧。

Webdriver之API详解(2)

一、判断页面元素是否可见

用于测试的HTML代码




    
    HTML中显示与隐藏元素
    
    


    display:元素不占用页面位置
    DIV 1
    DIV 2
    
    
visibility:元素占用页面位置 DIV 1 DIV 2

调用API实例代码

 1     def testElementIsDisplay(self):
 2         self.driver.get(r'file:///C:/Users/v-xug/Desktop/isdisplay.html')
 3         # 找到div2元素
 4         div2 = self.driver.find_element_by_id('div2')
 5         # 判断div2元素是否可见
 6         if div2.is_displayed():
 7             print('div2 元素可见')
 8         else:
 9             print('div2 元素不可见')
10         # 点击第一个按钮
11         button1 = self.driver.find_element_by_id('button1')
12         button1.click()
13         # 再次判断div2元素是否可见
14         if div2.is_displayed():
15             print('div2 元素可见')
16         else:
17             print('div2 元素不可见')
18         #找到div4元素
19         div4 = self.driver.find_element_by_id('div4')
20         # 判断div4是否可见
21         if div4.is_displayed():
22             print('div4 元素可见')
23         else:
24             print('div4 元素不可见')
25         # 点击第二个按钮
26         button2 = self.driver.find_element_by_id('button2')
27         button2.click()
28         # 再次判断div4元素是否可见
29         if div4.is_displayed():
30             print('div4 元素可见')
31         else:
32             print('div4 元素不可见')
 1 div2 元素不可见
 2 div2 元素可见
 3 div4 元素不可见
 4 div4 元素可见
 5 .
 6 ----------------------------------------------------------------------
 7 Ran 1 test in 9.288s
 8 
 9 OK
10 
11 Process finished with exit code 0

小结

通过代码的运行和输出结果,我们可以知道即使页面看不到的元素,webdriver也是可以找到的。因为隐藏的元素也是存在DOM树种的。

二、判断元素是否可操作

用于测试的HTML代码




    
    HTML 中不可操作元素


    
    

调用API实例代码

 1     def testElementIsEnable(self):
 2         self.driver.get(r'file:///C:/Users/v-xug/Desktop/isenable.html')
 3         input1 = self.driver.find_element_by_id('input1')
 4         if input1.is_enabled():
 5             print('input1 可操作')
 6         else:
 7             print('input1 不可操作')
 8         input2 = self.driver.find_element_by_id('input2')
 9         if input2.is_enabled():
10             print('input2 可操作')
11         else:
12             print('input2 不可操作')
13         input3 = self.driver.find_element_by_id('input3')
14         if input3.is_enabled():
15             print('input3 可操作')
16         else:
17             print('input3 不可操作')
 1 input1 可操作
 2 input2 不可操作
 3 .
 4 ----------------------------------------------------------------------
 5 Ran 1 test in 15.442s
 6 
 7 OK
 8 input3 可操作
 9 
10 Process finished with exit code 0

小结

从输出结果我们可以判断出,对元素添加了disabled属性后,元素将处于不可操作状态。

三、获取页面元素的属性

用于测试的网址

http://www.sogou.com

调用APi实例代码

1     def testGetAttribute(self):
2         self.driver.get('http://www.sogou.com')
3         query = self.driver.find_element_by_id('query')
4         print(query.get_attribute('name'))
5         query.send_keys('python')
6         print(query.get_attribute('value'))

四、双击某个元素

模拟鼠标左键双击操作

测试的HTML代码

(当双击时,输入框会变成红色)




    
    模拟鼠标双击操作


    请双击

调用API实例代码

 1     def testDoubleClick(self):
 2         from selenium.webdriver import ActionChains # 模拟鼠标操作事件包
 3         import time
 4         self.driver.get(r'file:///C:/Users/v-xug/Desktop/doubleclick.html')
 5         # 找到要操作的元素
 6         time.sleep(3)
 7         inputbox = self.driver.find_element_by_id('inputBox')
 8         action = ActionChains(self.driver)
 9         # 模拟鼠标双击操作
10         action.double_click(inputbox).perform()
11         time.sleep(3)

小结

selenium.webdriver.ActionChains 包是WebDriver针对Python语言提供的专门用于模拟鼠标操作事件的包,比如双击,悬浮,拖拽等,后面陆续介绍

五、操作单选下拉列表

用于测试的HTML代码




    
    操作下拉列表


    

调用API实例代码

遍历所有选项并打印选项显示的文本和选项值

 1     # 遍历下拉列表,获取下拉列表元素的所有显示值和value属性值
 2     def testSelect(self):
 3         import time
 4         self.driver.get(r'file:///C:/Users/v-xug/Desktop/actionselect.html')
 5         # 查找下拉列表元素
 6         select = self.driver.find_element_by_name('fruit')
 7         elements = select.find_elements_by_xpath("//option")
 8         for element in elements:
 9             print(element.text)
10             print(element.get_attribute('value'))
11             element.click()
12             time.sleep(1)
 1 桃子
 2 taozi
 3 西瓜
 4 xigua
 5 橘子
 6 juzi
 7 猕猴桃
 8 nihoutao
 9 山楂
10 shanzha
11 荔枝
12 lizhi
13 .
14 ----------------------------------------------------------------------
15 Ran 1 test in 16.693s
16 
17 OK
18 
19 Process finished with exit code 0

选择下拉列表元素的三种方法

 1     def testSelectOption(self):
 2         import time
 3         from selenium.webdriver.support.ui import Select
 4         self.driver.get(r'file:///C:/Users/v-xug/Desktop/actionselect.html')
 5         select_element = Select(self.driver.find_element_by_xpath('//select'))
 6         # 打印默认选项
 7         print(select_element.first_selected_option.text)
 8         # 获取所有下拉选项元素
 9         all_options = select_element.options
10         # 打印下拉选项的个数
11         print(len(all_options))
12         # 如果第二个选项可以操作且没有被选中,那么我们就选择这个选项
13         if all_options[1].is_enabled() and not all_options[1].is_selected():
14             # 第一个方法 通过序号选择选项 序号从0开始
15             select_element.select_by_index(1)
16             # 打印选中选项的文本
17             print(select_element.all_selected_options[0].text)
18         time.sleep(2)
19         # 第二种办法通过选项的文本选择选项
20         select_element.select_by_visible_text('猕猴桃')
21         # 断言选中的选项是否为猕猴桃
22         self.assertEqual(select_element.all_selected_options[0].text, '猕猴桃')
23         time.sleep(2)
24 
25         # 第三种方法,通过选项的value属性值选择选项
26         select_element.select_by_value('shanzha')
27         print(select_element.all_selected_options[0].text)
28         self.assertEqual(select_element.all_selected_options[0].text, '山楂')
 1 橘子
 2 6
 3 西瓜
 4 山楂
 5 .
 6 ----------------------------------------------------------------------
 7 Ran 1 test in 14.531s
 8 
 9 OK
10 
11 Process finished with exit code 0

小结

selenium'_element.all_selected_options 属性获取的是所有被选中项的对象组成的列表对象,由于本实例中是单选下拉列表,因此选中项只有一个,通过select_element.all_selected_options[0].text这句代码获取被选中项的文本内容

断言单选列表的选项值

 1     def testAssertOptions(self):
 2 
 3         from selenium.webdriver.support.ui import Select
 4         self.driver.get(r'file:///C:/Users/v-xug/Desktop/actionselect.html')
 5         select_element = Select(self.driver.find_element_by_xpath('//select'))
 6         # 找到所有的下拉选项
 7         actual_options = select_element.options
 8         # 期望列表
 9         expect_optionslist = ['桃子','西瓜','橘子','猕猴桃','山楂','荔枝']
10         # 获取所有的选项的文本值
11         actual_optionslist = [actual_options for actual_options in  map(lambda option:option.text, actual_options)]
12         print(actual_optionslist)
13         # 断言
14         self.assertListEqual(expect_optionslist, actual_optionslist)

总结

今天就整理这些吧,后面还有挺多实例需要整理,也都是平时工作中会经常用到的API;文章中文字说明不是很多,代码比较多,大多数我都注释过了,因为我觉得只要有点基础的都能看的懂,搞太多文字反而没有用,按照我整理的实例,自己运行一下完全能明白!

今天的文章就到这里了哟,喜欢的小伙伴记得点赞收藏评论加关注哟。

Webdriver之API详解(2)

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章