select类、Alert类、鼠标事件

发布时间:2025-12-09 11:46:46 浏览次数:1

一、select类

https://github.com/SeleniumHQ/selenium

1.下拉框

 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类
2、首先对select类进行实例化
3、定位到下拉框的元素属性
4、使用select类进行实例化后的对象调用该类里面的方法'''

 

 

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

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

 

二、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

1.类中方法:

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

2.确定/取消的按钮

  .switch_to.alert.accept()   确定
.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方法进入iframe10 t.sleep(3)11 #进入到第二层的iFrame12 driver.switch_to.frame(0)         #索引方法进入iframe(这里的索引指的是此iframe在同层级iframe中的位置)13 t.sleep(3)14 driver.find_element_by_xpath("/html/body/p[1]/p[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(基本不使用)

 

四、鼠标事件

先导入类----实例化-----方法

 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/p[1]/p[1]/p[4]/span")  #“设置”的位置13 obj.move_to_element(setting).perform()      #把鼠标移动到“设置”14 t.sleep(5)15 #点击“搜索设置”16 driver.find_element_by_xpath("/html/body/p[1]/p[1]/p[4]/p[1]/p/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

1.悬浮操作

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

2.右键操作

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

3.双击操作

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

类实例化对象.double_click(元素).perform()
alert 确定 取消
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477