Select类、Alert类、iFrame鼠标事件

一、Select类

https://github.com/SeleniumHQ/selenium

1.下拉框(此方法只能用于select标签,获取不到元素属性的情况)

 1 from selenium import webdriver
 2 from selenium.webdriver.support.select import Select
 3 #       包        包       包      模块           类
 4 import time
 5 
 6 
 7 driver=webdriver.Chrome()
 8 driver.maximize_window()
 9 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/index(1).html")
10 nr=driver.find_element_by_id("nr")
11 obj=Select(webelement=nr)
12 time.sleep(2)
13 #索引方式
14 obj.select_by_index(2)
15 #文本方式
16 obj.select_by_visible_text("Java语言")
17 #val方式
18 obj.select_by_value("Java")
19 time.sleep(2)
20 driver.quit()
View Code

(把整个html文件直接拖到浏览器的网址处,然后复制获取这个地址栏的内容)

1.1下拉框操作步骤:

1.先导入Select          from selenium.webdriver.support.select import Select
2.
定位到下拉框的元素属性        下拉框元素=
3.然后对Select类进行实例化      obj=Select(webelement=下拉框元素)
4.使用Select类进行实例化后的对象调用该类里面的方法  obj.select_by_index(); obj.select_by_visible_text(""); obj.select_by_value("");

1.2三种方式选择下拉框内容:

以html文件中的Java为例:
#索引方式
  .select_by_index(2)
#文本方式
  .select_by_visible_text("Java语言")
#value方式
  .select_by_value("Java")

 2.下拉框(可以获取到下拉框内容的属性的情况)

 1 from  selenium import webdriver
 2 import time as t
 3 
 4 driver=webdriver.Chrome()
 5 driver.maximize_window()
 6 driver.get("https://www.zhipin.com/xian/?sid=sem_pz_bdpc_dasou_title")  #boss直聘首页
 7 t.sleep(3)
 8 driver.find_element_by_name("query").send_keys("测试专家")      #搜索输入”测试专家“
 9 t.sleep(3)
10 driver.find_element_by_xpath("/html/body/div[1]/div[3]/div/div[1]/div[1]/form/button").click()  #点击搜索按钮
11 t.sleep(3)
12 driver.find_element_by_class_name("ipt").click()   #选择工作经验下拉框
13 t.sleep(3)
14 driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[4]/div[1]/span/div/ul/li[5]/a").click()   #点击1-3年
15 t.sleep(3)
16 driver.quit()
View Code

 

 

二、Alert类

https://element.eleme.cn/#/zh-CN

 1 from selenium import webdriver
 2 import time
 3 
 4 '''确定取消按钮'''
 5 driver=webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/%E5%B7%A5%E5%85%B7/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E7%A1%AE%E5%AE%9A%E5%8F%96%E6%B6%88%E6%B6%88%E6%81%AF.html")
 8 time.sleep(3)
 9 driver.find_element_by_tag_name("input").click()
10 time.sleep(3)
11 #点击确定操作
12 driver.switch_to.alert.accept()
13 time.sleep(3)
14 #页面刷新
15 driver.refresh()
16 driver.find_element_by_tag_name("input").click()
17 time.sleep(3)
18 #点击取消操作
19 driver.switch_to.alert.dismiss()
20 time.sleep(3)
21 driver.quit()
22 
23 '''获取警告框的文本信息'''
24 driver=webdriver.Chrome()
25 driver.maximize_window()
26 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/%E5%B7%A5%E5%85%B7/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E8%AD%A6%E5%91%8A%E6%A1%86.html")
27 time.sleep(3)
28 print(driver.switch_to.alert.text)
29 time.sleep(3)
30 driver.quit()
31 
32 '''消息对话框'''
33 driver=webdriver.Chrome()
34 driver.maximize_window()
35 driver.get("file:///D:/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%AD%A6%E4%B9%A0/%E5%B7%A5%E5%85%B7/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html")
36 time.sleep(3)
37 #点击按钮
38 driver.find_element_by_tag_name("input").click()
39 time.sleep(3)
40 #输入内容
41 driver.switch_to.alert.send_keys("WEB自动化测试")
42 time.sleep(3)
43 #点击确定
44 driver.switch_to.alert.accept()
45 time.sleep(3)
46 #刷新
47 driver.refresh()
48 driver.find_element_by_tag_name("input").click()
49 time.sleep(3)
50 driver.switch_to.alert.send_keys("WEB自动化测试")
51 time.sleep(3)
52 #点击取消
53 driver.switch_to.alert.dismiss()
54 time.sleep(2)
55 driver.quit()
View Code

Alert类不需要导入

弹出框的操作一般是:先对弹出框点击 ,然后使用方法来点击接受或者拒绝

1.类中方法:

text:获取弹出框的文本信息
accept:是接受Confirm弹出框
dismiss:是拒绝接受Confirm弹出框
send_keys:是在Prompt消息对话框里面输入想要输入的内容

2.确定/取消的按钮

driver.switch_to.alert.accept()   确定
driver.switch_to.alert.dismiss() 取消

 

 

3.获取警告框的文本信息

  .switch_to.alert.text  

4.消息对话框

 

三、iFrame框架

 1 from selenium import webdriver
 2 import time as t
 3 
 4 driver=webdriver.Chrome()
 5 driver.maximize_window()
 6 driver.get("https://file.qq.com/")
 7 t.sleep(6)
 8 #进入到第一层的iFrame
 9 driver.switch_to.frame("login_frame1")   #ID方法进入iframe
10 t.sleep(3)
11 #进入到第二层的iFrame
12 driver.switch_to.frame(0)         #索引方法进入iframe(这里的索引指的是此iframe在同层级iframe中的位置)
13 t.sleep(3)
14 driver.find_element_by_xpath("/html/body/div[1]/div[9]/a[1]").click()
15 t.sleep(3)
16 driver.find_element_by_id("u").send_keys("513399690@qq.com")
17 t.sleep(2)
18 driver.quit()
View Code

 

1.遇到iFrame框架,解决问题的思路是:

1、先进入到iFrame的框架

(如果frame有多层,需要一层层进入。进入的方法有三种)

2、然后再定位框架里面的元素属性

 

2.怎么判断

当你使用了所有的元素定位的方式并且都是正确的,但是就是提示找不到。那么这个查看源码是否存在iFrame的框架。

如果存在,通过三种方式可以进入到iFrame的框架:

1、通过ID

2、通过索引  (使用索引进入框架时,需要注意索引是同层级中我们的目标iframe的索引,不要跨级去看索引了)

3、通过name(基本不使用)

driver .switch_to.frame( )

 

四、鼠标事件

先导入ActionChains类----把鼠标实例化-----定位元素------移动鼠标到这个元素的位置

 1 from selenium import webdriver
 2 from  selenium.webdriver.common.action_chains import ActionChains
 3 import time as t
 4 
 5 '''鼠标悬浮'''
 6 driver=webdriver.Chrome()
 7 driver.maximize_window()
 8 driver.get("https://www.baidu.com")
 9 #鼠标事件实例化
10 obj=ActionChains(driver=driver)
11 #要定位的元素属性的对象
12 setting=driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/span")  #“设置”的位置
13 obj.move_to_element(setting).perform()      #把鼠标移动到“设置”
14 t.sleep(5)
15 #点击“搜索设置”
16 driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/div[1]/div/a[1]/span").click()
17 t.sleep(5)
18 driver.quit()
19 
20 '''右键的操作'''
21 driver=webdriver.Chrome()
22 driver.maximize_window()
23 driver.get("https://www.baidu.com")
24 #鼠标事件进行实例化
25 obj=ActionChains(driver=driver)
26 so=driver.find_element_by_id("kw")    #id定位百度搜索框
27 obj.context_click(so).perform()         #对 百度搜索框右键操作
28 t.sleep(3)
29 driver.quit()
30 
31 '''鼠标双击操作'''
32 driver=webdriver.Chrome()
33 driver.maximize_window()
34 driver.get("https://www.baidu.com")
35 obj=ActionChains(driver=driver)
36 t.sleep(3)
37 driver.find_element_by_id("kw").send_keys("软件测试")    #在搜索栏输入内容
38 t.sleep(3)
39 soButton=driver.find_element_by_id("su")    #定位到“百度一下”
40 obj.double_click(soButton).perform()      #双击“百度一下”
41 t.sleep(5)
42 driver.quit()
View Code

from selenium.webdriver.common.action_chains import ActionChains

obj=ActionChains(driver=driver)

 

1.悬浮操作

  类实例化对象.move_to_element(元素).perform()   

 

2.右键操作

  类实例化对象.context_click(元素).perform()   

 

3.双击操作

场景:比如付款时的立即支付按钮,双击两次会不会出现两份账单,这些都是测试人员需要测试的。

类实例化对象.double_click(元素).perform()

 

posted @ 2022-04-07 16:54  jia---  阅读(114)  评论(0)    收藏  举报