其他分享
首页 > 其他分享> > 12.3

12.3

作者:互联网

 
  Alert类实战

在UI的自动化测试实战中,针对弹出框的处理,主要使用的是Alert的类这部分,在JavaScript的技术体系中,针对弹出框的部分,主要涉及到Alert警告框,Confirm确认框,Prompt消息框。下来主要详细的说下Alert里面每个方法的具体使用,具体源码如下:

点击查看代码

在Alert的类里面,涉及到的方法以及方法的作用主要汇总为如下:

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

accept是接受Confirm弹出框

dismiss是拒绝接受Confirm弹出框

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

 

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function func() {
            alert("我是一个消息框")
        }
    </script>
</head>
<body>
    <div>
        <input type="button" onclick="func()" value="显示消息框">
    </div>
</body>
</html>
from selenium.webdriver.common.alert import Alert
from selenium import  webdriver
import  time as t

driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('file:///D:/code/testdev/Alert%E5%AE%9E%E6%88%98/alert.html')
t.sleep(2)
driver.find_element_by_xpath('/html/body/div/input').click()
t.sleep(2)
# Alert类的方法
# print(Alert(driver=driver).text)
# 第二种调用Alert类的方法
print(driver.switch_to.alert.text)
t.sleep(2)
driver.quit()

  消息对话框

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function disp_prompt()
        {
            var name=prompt("请输入您的姓名:","")
            if(name!=null && name!="")
            {
                document.write("Hello "+name+"!")
            }
        }
    </script>
</head>
<body>
<center>
    <input type="button" onclick="disp_prompt()" value="请点击我!">
</center>
</body>
</html>
from selenium import  webdriver
import  time as t

driver=webdriver.Chrome()
driver.get('file:///D:/code/testdev/Alert%E5%AE%9E%E6%88%98/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html')
t.sleep(2)
driver.find_element_by_xpath('/html/body/center/input').click()
t.sleep(2)
driver.switch_to.alert.send_keys('tian')
t.sleep(2)
driver.switch_to.alert.accept()
t.sleep(2)
driver.quit()

  确认框

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function disp_confirm()
        {
            var r=confirm("请您点击按钮!")
            if(r==true)
            {
                document.write("您点击了确认按钮")
            }
            else
            {
                document.write("您点击了取消按钮")
            }
        }
    </script>
</head>
<body>
<center>
    <input type="button" onclick="disp_confirm()" value="请点击">
</center>
</body>
</html>
from selenium.webdriver.common.alert import Alert
from selenium import  webdriver
import  time as t

driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('file:///D:/code/testdev/Alert%E5%AE%9E%E6%88%98/%E7%A1%AE%E8%AE%A4%E6%A1%86.html')
t.sleep(2)
driver.find_element_by_css_selector('body > center > input[type=button]').click()
t.sleep(2)
driver.switch_to.alert.accept()
t.sleep(3)
# 刷新
driver.refresh()
driver.find_element_by_css_selector('body > center > input[type=button]').click()
t.sleep(2)
driver.switch_to.alert.dismiss()
t.sleep(2)
driver.quit()

  

悬浮

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

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.sina.com.cn/')
t.sleep(3)
#获取到移动客户端元素属性
locator=driver.find_element_by_xpath('//*[@id="SI_Top_Wrap"]/div/div/div/div[1]/div[4]/a/i')
action=ActionChains(driver=driver)

action.move_to_element(locator).perform()
t.sleep(5)
driver.quit()

  

 

 

 双击

from selenium.webdriver.common.action_chains import  ActionChains
from selenium import webdriver
import  time as t

driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('https://www.hao123.com/')
driver.implicitly_wait(30)
t.sleep(5)
obj=ActionChains(driver=driver)
driver.find_element_by_name('word').send_keys('芜湖')
t.sleep(5)
so=driver.find_element_by_xpath('//*[@id="search"]/form/div[3]/input')
# 双击
obj.double_click(so).perform()
t.sleep(3)
driver.quit()

  

鼠标事件

from selenium import  webdriver
from selenium.webdriver.common.action_chains import ActionChains
import  time as t

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
t.sleep(2)
# 针对ActionChains进行实例化
obj=ActionChains(driver=driver)
settings=driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')
obj.move_to_element(settings).perform()
t.sleep(3)
# 点击搜索设置
driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[1]').click()
t.sleep(3)
# 点击保存设置
driver.find_element_by_xpath('//*[@id="se-setting-7"]/a[2]').click()
t.sleep(3)
print(driver.switch_to.alert.text)
t.sleep(3)
# 点击确定后,页面跳转到首页
driver.switch_to.alert.accept()
t.sleep(3)
driver.quit()

 

 

 

右键

 

 

 

WebDriverWait类实战

在UI的自动化测试中,经常会由于网络加载慢的问题导致资源加载不出来,从而影响测试的效率,之前我们对这样的处理方案是使用了time库里面的sleep()方法来休眠几秒钟,但是这样的方式毕竟不是很好的解决方案。在UI自动化测试中,关于等待的部分,主要汇总为如下三点,具体如下:

1、固定等待,也就是使用sleep()方法

2、隐式等待,使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间

3、显式等待,主要指的是程序每隔一段时间执行自定义的程序判断条件,如果判断成立,程序就会继续执行,那么如果判断失败,就会TimeOutExpection的异常信息。

 

 隐式等待

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

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.hao123.com')
driver.implicitly_wait(30)
wait=WebDriverWait(driver=driver,timeout=10).until(method=es.element_to_be_clickable((By.NAME,'word')))
wait.send_keys('hh')
t.sleep(3)
driver.quit()

  

标签:webdriver,selenium,driver,element,12.3,sleep,import
来源: https://www.cnblogs.com/gapfupeng/p/15639908.html