ICode9

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

自动化测试(二)

2022-05-28 23:34:38  阅读:147  来源: 互联网

标签:webdriver driver element window sleep 测试 自动化 find


定位元素

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

# 在By类中,类属性就是元素定位的方式
driver=webdriver.Chrome()
# 实例化webdriver,并指定浏览器
driver.maximize_window()
# 窗口最大化
driver.implicitly_wait(30)
# 隐式等待,设置最长时间为30s
driver.get('http://www.baidu.com')
# 导航到被测试的网址
# driver.find_element(By.ID,'kw').send_keys('自动化测试')
# driver.find_element(By.NAME,'wd').send_keys('测试')
# driver.find_element(By.CLASS_NAME,'s_ipt').send_keys('人间')
# driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys('dianshi')
# driver.find_element(By.LINK_TEXT,'新闻').click()
# driver.find_element(By.PARTIAL_LINK_TEXT,'新').click()
# driver.find_element(By.CSS_SELECTOR,'#kw').send_keys('sdfs')
driver.find_elements(By.TAG_NAME,'input')[7].send_keys('dianshijv')
t.sleep(3)
#固定等待3s
driver.quit()
# 退出驱动程序

获取被测网址 

获取当前页面的代码

获取当前的title

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
t.sleep(3)
# 获取被测网址
# print(driver.current_url)
# 获取当前页面的代码
# print(driver.page_source)
# 获取当前的title
# print(driver.title)
driver.quit()

页面的前进与后退

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
t.sleep(3)
driver.get('https://cn.bing.com/')
t.sleep(3)
driver.back()
# 页面后退
t.sleep(3)
print(driver.current_url)
# 获取当前和页面的网址
t.sleep(3)
driver.forward()
# 页面前进
print(driver.current_url)
# 获取当前页面的网址
t.sleep(3)
driver.quit()

获取当前窗口

获取浏览器的所有窗口

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://mail.sina.com.cn/')
now_handle=driver.current_window_handle
# 获取当前的窗口
t.sleep(3)
driver.find_element(By.LINK_TEXT,'注册').click()
t.sleep(3)
handles=driver.window_handles
# 获取全部窗口
for handle in handles:
    # 对全部窗口进行循环
    if handle!=now_handle:
        # 新窗口和之前获取的当前窗口进行比较
        driver.switch_to.window(handle)
        # 切换到新窗口
        t.sleep(3)
        driver.find_element(By.NAME,'email').send_keys('zh15102903662@sina.com')
        t.sleep(3)
        driver.close()
driver.switch_to.window(now_handle)
# 切换到之前的当前窗口
t.sleep(3)
driver.find_element(By.ID,'freename').send_keys('***********@sina.com')
t.sleep(4)
driver.quit()

对页面进行刷新

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
driver.find_element(By.NAME,'wd').send_keys('asds')
t.sleep(4)
driver.refresh()
# 刷新
t.sleep(3)
driver.quit()

获取执行的浏览器

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
print(driver.name)
# 获取执行的浏览器
driver.quit()

清空

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=driver.find_element(By.NAME,'wd')
so.send_keys('adsd')
t.sleep(3)
so.clear()
# 清空
t.sleep(3)
driver.quit()

获取输入框中的值

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=driver.find_element(By.ID,'kw')
so.send_keys('asda')
print(so.get_attribute('value'))
driver.quit()

判断元素是否可见

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
about=driver.find_element(By.LINK_TEXT,'关于百度')
print(about.is_displayed())
# 判断元素是否可见
driver.quit()

判断元素是否可编辑

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=driver.find_element(By.ID,'kw')
print(so.is_enabled())
# 判断元素是否可编辑
driver.quit()

判断是否已选中

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://mail.sina.com.cn/')
so=driver.find_element(By.ID,'store1')
print(so.is_selected())
# 判断是否已选中
driver.quit()

需要调用的类

from selenium import webdriver
from  selenium.webdriver.support.select import Select
# Select类提供了很多方法,可在下拉框定位中使用
from selenium.webdriver.common.action_chains import ActionChains
# ActionChains提供了对常用鼠标操作的方法
from  selenium.webdriver.common.by import By
import time as t
from selenium.webdriver.common.alert import Alert
# 在selenium中对于弹出框的处理可以使用alert模块中的Alert类
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
# WebDriverWait类的until方法中,参数method指的是需要调用的方法,调用方法来自expected_conditions模块中的类。
# 也就是说 WebDriverWait和expected_conditions模块结合起来应用

获取弹出框的文本信息

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
mouse=driver.find_element(By.XPATH,'//*[@id="s-usersetting-top"]')
actionChains=ActionChains(driver)
# 对ActionChains进行实例化
actionChains.move_to_element(mouse).perform()
t.sleep(3)
driver.find_element(By.LINK_TEXT,'搜索设置').click()
t.sleep(3)
driver.find_element(By.XPATH,'//*[@id="wrapper"]/div[6]/div/div/ul/li[1]').click()
t.sleep(3)
driver.find_element(By.LINK_TEXT,'保存设置').click()
print(driver.switch_to.alert.text)
# 获取弹出框的文本信息
driver.switch_to.alert.accept()
# 点击弹出框中的确定按钮
driver.quit()

确定取消按钮

<!DOCTYPE html>
<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>
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('file:///D:/CODE/testDev/%E7%A1%AE%E5%AE%9A%E6%B6%88%E6%81%AF.html')
driver.find_element(By.XPATH,'/html/body/center/input').click()
t.sleep(5)
# driver.switch_to.alert.accept()
# 点击弹出框中的确定按钮
driver.switch_to.alert.dismiss()
# 点击弹出框中的取消按钮
t.sleep(5)
driver.quit()

消息对话框的处理

<!DOCTYPE html>
<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>
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('file:///D:/CODE/testDev/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html')
driver.find_element(By.XPATH,'/html/body/center/input').click()
driver.switch_to.alert.send_keys('张红')
# 往弹出框里的消息对话框输入文字
t.sleep(3)
# driver.switch_to.alert.accept()
# 点击弹出框里的确定按钮
driver.switch_to.alert.dismiss()
# 点击弹出框里的取消按钮
t.sleep(3)
driver.quit()

判断元素可见后执行输入点击等操作

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(30)
so=WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable((By.ID,'kw')))
# 判断元素可见后执行输入点击等操作
so.send_keys('asds')
t.sleep(3)
driver.quit()

指定元素的文本位置

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://mail.sina.com.cn/')
driver.find_element(By.ID,'freename').send_keys('')
# 定位邮箱登录的用户名 设置为空
driver.find_element(By.ID,'freepassword').send_keys('')
# 定位邮箱登录的密码 设置为空
driver.find_element(By.LINK_TEXT,'登录').click()
# 点击登录按钮
WebDriverWait(driver,10).until(expected_conditions.text_to_be_present_in_element((By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]'),'请输入邮箱名'))
# 在指定元素的文本位置,一般验证文本的错误信息,这里验证返回的错误信息是否为请输入邮箱名
t.sleep(5)
driver.quit()

判断元素是否可见,可见后再执行操作

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=WebDriverWait(driver,10).until(expected_conditions.visibility_of_element_located((By.LINK_TEXT,'关于百度')))
# 判断元素是否可见,可见后再执行操作
so.click()
t.sleep(3)
driver.quit()

鼠标悬浮操作

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=driver.find_element(By.XPATH,'//*[@id="s-usersetting-top"]')
actionChains=ActionChains(driver)
# 对ActionChains进行实例化
actionChains.move_to_element(so).perform()
# 鼠标悬浮到设置
t.sleep(3)
driver.find_element(By.LINK_TEXT,'搜索设置').click()
t.sleep(3)
driver.quit()

鼠标右键操作

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
so=driver.find_element(By.ID,'kw')
actionChains=ActionChains(driver)
# 对ActionChains类进行实例化
actionChains.context_click(so).perform()
# 鼠标在百度搜索输入框右键操作
t.sleep(3)
driver.quit()

鼠标双击操作

driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.baidu.com/')
driver.find_element(By.ID,'kw').send_keys('sdsds')
so=driver.find_element(By.ID,'su')
actionChains=ActionChains(driver)
# 对ActionChains类进行实例化
actionChains.double_click(so).perform()
# 对百度以下按钮进行双击操作
t.sleep(3)
driver.quit()

 


标签:webdriver,driver,element,window,sleep,测试,自动化,find
来源: https://www.cnblogs.com/zhanghong23/p/16322515.html

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

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

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

ICode9版权所有