ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UI自动化测试之三(Alert、悬浮、键盘事件、WebDriverWait)

2022-09-15 19:04:05  阅读:395  来源: 互联网

标签:webdriver selenium driver Alert sleep time UI import WebDriverWait


(一)Alert

三种方式:

test:获取弹出框的文本信息

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time


driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/Administrator/Desktop/%E8%AD%A6%E5%91%8A%E6%A1%86.html')
#获取警告框里面的文本信息
time.sleep(3)
print(driver.switch_to.alert.text)
#点击确定按钮
driver.switch_to.alert.accept()
time.sleep(3)
driver.close()

accept、dismiss:accept是接受Confirm弹出框 dismiss是拒绝接受Confirm弹出框

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time


driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/Administrator/Desktop/%E7%A1%AE%E5%AE%9A%E6%B6%88%E6%81%AF.html')
time.sleep(3)
#定位到请点击,并点击请点击
driver.find_element(By.XPATH,'/html/body/center/input').click()
time.sleep(3)
#点击确定按钮
driver.switch_to.alert.accept()
time.sleep(3)
#刷新后重复第一次的操作,点击请点击
driver.refresh()
driver.find_element(By.XPATH,'/html/body/center/input').click()
time.sleep(3)
#点击取消按钮
driver.switch_to.alert.dismiss()
time.sleep(3)
driver.close()

send_keys:send_keys是在Prompt消息对话框里面输入想要输入的内容

from selenium import webdriver
from selenium.webdriver.common.by import  By
import time

#消息对话框输入想要的内容send_keys
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///C:/Users/Administrator/Desktop/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html')
time.sleep(3)
driver.find_element(By.XPATH,'/html/body/center/input').click()
time.sleep(2)
#输入想要的内容
driver.switch_to.alert.send_keys('无涯教育')
time.sleep(2)
driver.switch_to.alert.accept()
time.sleep(2)
driver.close()

(二)、悬浮

1、右键出现悬浮框

from selenium import webdriver
from selenium.webdriver.common.by import  By
from selenium.webdriver.common.action_chains import ActionChains
import time


driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://baidu.com')
#实例化
obj=ActionChains(driver=driver)
time.sleep(3)
#定义so=定位到的输入框
so=driver.find_element(By.ID,'kw')
#右键
obj.context_click(so).perform()              
time.sleep(3)
driver.close()

2、双击(场景:验证商品双击支付按钮是否会出现两笔订单)

from selenium import webdriver
from selenium.webdriver.common.by import  By
from selenium.webdriver.common.action_chains import ActionChains
import time


driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://baidu.com')
obj=ActionChains(driver=driver)
time.sleep(3)
driver.find_element(By.ID,'kw').send_keys('admin')
button=driver.find_element(By.ID,'su')
obj.double_click(button).perform()
time.sleep(3)
driver.close()

思路:我们在百度输入框输入admin后双击‘百度一下’

3、悬浮

from selenium import webdriver
from selenium.webdriver.common.by import  By
from selenium.webdriver.common.action_chains import ActionChains
import time


driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://baidu.com')
obj=ActionChains(driver=driver)
time.sleep(3)
settings=driver.find_element(By.XPATH,'//*[@id="s-usersetting-top"]')
obj.move_to_element(settings).perform()
time.sleep(3)
#点击搜索设置(利用ctrl+f)
driver.find_element(By.XPATH,'//*[@id="s-user-setting-menu"]/div/a[1]/span').click()
time.sleep(2)
#点击保存设置
driver.find_element(By.XPATH,'//*[@id="se-setting-7"]/a[2]').click()
time.sleep(2)
#获取弹出框的文本信息
print(driver.switch_to.alert.text)
driver.switch_to.alert.accept()
driver.close()

思路:我们自动化点击百度首页的设置,选择搜索设置,选择保存设置后输出结果

 

(三)、键盘事件(以代码代替键盘进行复制粘贴等操作)

from selenium import webdriver
from selenium.webdriver.common.by import  By
from selenium.webdriver.common.keys import Keys
import time
#以百度为例,进行输入框写入内容,再Ctrl+a全选,然后复制,再删除,再粘贴
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
time.sleep(2)
so=driver.find_element(By.ID,'kw')
so.send_keys('无涯 接口测试')
time.sleep(2)
#全选
so.send_keys(Keys.CONTROL,'a')
time.sleep(2)
#复制
so.send_keys(Keys.CONTROL,'c')
time.sleep(2)
#删除
so.send_keys(Keys.BACKSPACE)
time.sleep(2)
#粘贴
so.send_keys(Keys.CONTROL,'v')
time.sleep(2)
driver.close()

(四)、WebDriverWait

等待分为三种
1、固定等待,也就是使用sleep()方法
2、隐式等待,使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间
3、显式等待,主要指的是程序每隔一段时间执行自定义的程序判断条件,如果判断成立,程序就会继
  续执行,那么如果判断失败,就会报TimeOutException的异常信息
'''

from selenium import webdriver
from selenium.webdriver.common.by import  By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as es
import time

#资源可见操作
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(30)
obj=WebDriverWait(
    driver=driver,
    timeout=10).until(
    method=es.element_to_be_clickable((By.ID,'kw')))            
obj.send_keys('百度测试')
time.sleep(2)
driver.close()

#指定元素的文本信息
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://mail.sina.com.cn')
driver.implicitly_wait(30)
time.sleep(2)
driver.find_element(By.CLASS_NAME,'loginBtn').click()
obj=WebDriverWait(
    driver=driver,
    timeout=10).until(
    method=es.text_to_be_present_in_element((By.XPATH,'/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]'),'请输入邮箱名'))
time.sleep(2)
driver.close()

#判断元素是否可见
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.implicitly_wait(30)
obj=WebDriverWait(
    driver=driver,
    timeout=10).until(
    method=es.visibility_of_element_located((By.LINK_TEXT,'关于百度')))
print(obj.is_displayed())
obj.click()
time.sleep(2)
driver.close()

(五)、iframe页面的框架

场景

当一个页面存在页面的框架的时候,我们使用一般的元素定位是会出错的,那么这个时候就找一下是否存在iframe的框架

进入框架的方试

按照ID&NAME&索引

案例

我们以腾讯文件为例(我们需要点的‘密码登录’是在两层框架之下的,所以思路就是我们先进入到一级框架,在进入到二级框架,这样才可以定位到‘密码登录’)
1、ID的方式
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://file.qq.com/')
driver.implicitly_wait(30)
#进入到第一层级的iframe
driver.switch_to.frame('login_frame1')
time.sleep(2)
#进入到第二层级的iframe
driver.switch_to.frame('ptlogin_iframe')
time.sleep(2)

driver.find_element(By.ID,'switcher_plogin').click()
time.sleep(3)
driver.close()
2、索引的方式
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://file.qq.com/')
driver.implicitly_wait(30)
#进入到第一层级的iframe
driver.switch_to.frame(0)
time.sleep(2)
#进入到第二层级的iframe
driver.switch_to.frame(0)
time.sleep(2)
driver.find_element(By.ID,'switcher_plogin').click()
time.sleep(3)
driver.close()

标签:webdriver,selenium,driver,Alert,sleep,time,UI,import,WebDriverWait
来源: https://www.cnblogs.com/L2119/p/16697623.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有