Web自动化测试-3

1.下拉列表

笔记在代码内

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver=webdriver.Edge()
url = r"D:\资料\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
driver.implicitly_wait(10)
# 下拉列表的标签是select
# 方式一(有不同的value值的话一般用这个)
# driver.find_element(By.CSS_SELECTOR,"[value='sh']").click()
# sleep(2)
# driver.find_element(By.CSS_SELECTOR,"[value='bj']").click()
# sleep(2)


# 方式二(当value值无法定位时,用这个更方便)
# 定位select
el=driver.find_element(By.CSS_SELECTOR,"#select")
sleep(2)

# 导Select包
# 通过index来访问
Select(el).select_by_index(1)
sleep(2)
Select(el).select_by_index(2)
sleep(2)

# 通过value值访问
Select(el).select_by_value("sh")
sleep(2)

# 通过文本显示
Select(el).select_by_visible_text("上海")
sleep(2)

driver.quit()

测试结果如图

2.弹出框

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver=webdriver.Edge()
url = r"D:\资料\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
driver.implicitly_wait(10)

# 有三种弹出框:alert警告框,confirm确认框,prompt提示框

# 以下为警告框,其他的框也是一样的方法
# 定位alert按钮,
driver.find_element(By.CSS_SELECTOR,"#alert").click()

# 弹出警告框
# 在弹出三种框后都必须处理,不然无法进行下一步操作
at=driver.switch_to.alert

# 其他框也具有accept同意,text获取文本,dismiss取消方法
# 同意
# at.accept()

# 获取文本,即警告的信息
print("警告信息:",at.text)

# 取消
at.dismiss()

sleep(2)

driver.quit()

3.滚动条

from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver=webdriver.Edge()
url = r"D:\资料\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
driver.implicitly_wait(10)
# selenium中没有直接提供定位滚动条的方法,它提供了执行js语句方法
# 有些操作只有滚动条拉到最底才有指定按钮可用
# 设置滚动条:
js="window.scrollTo(0,1000)"
# 执行:
driver.execute_script(js)

sleep(2)

driver.quit()

4.表单

from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()
url = r"D:\资料\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
driver.implicitly_wait(10)

# 使用的黑马程序员的案例
# 主页面
driver.find_element(By.CSS_SELECTOR, "#user").send_keys("admin")
driver.find_element(By.CSS_SELECTOR, "#password").send_keys("admin")
# 电话
driver.find_element(By.CSS_SELECTOR, ".tel").send_keys("18611112222")
# 邮件
driver.find_element(By.CSS_SELECTOR, "#email").send_keys("123@qq.com")
sleep(2)

# 切换到注册A表单
# 切换表单时,可以使用其id、name、iframe元素
# 使用name
driver.switch_to.frame("myframe1")
# # 使用id
# driver.switch_to.frame("idframe1")
# # 使用属性
# driver.switch_to.frame(driver.find_element(By.CSS_SELECTOR,"[name='myframe1']"))

# A表单
driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("admin")
driver.find_element(By.CSS_SELECTOR, "#passwordA").send_keys("admin")
driver.find_element(By.CSS_SELECTOR, ".telA").send_keys("18611112222")
driver.find_element(By.CSS_SELECTOR, "#emailA").send_keys("123@qq.com")
sleep(2)

# 注意:由于切换到了A表单,A表单内没有frame表单元素,故无法切换,导致无法定位
# 解决方法:切换到默认目录,然后再切换到B表单

# 恢复默认主页
driver.switch_to.default_content()
# B表单
driver.switch_to.frame("myframe2")
driver.find_element(By.CSS_SELECTOR, "#userB").send_keys("admin")
driver.find_element(By.CSS_SELECTOR, "#passwordB").send_keys("admin")
driver.find_element(By.CSS_SELECTOR, ".telB").send_keys("18611112222")
driver.find_element(By.CSS_SELECTOR, "#emailB").send_keys("123@qq.com")
sleep(2)

driver.quit()

# driver.switch_to.frame("myframe1")这个切换表单的方法与弹出框相似driver.switch_to.alert

5.多窗口

from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()
url = r"D:\资料\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
driver.implicitly_wait(10)

current_handle = driver.current_window_handle
print("获取当前窗口句柄", current_handle)
sleep(2)

# 打开初始目录中的”A网页“链接
driver.find_element(By.PARTIAL_LINK_TEXT, "A网页").click()
sleep(2)

handles = driver.window_handles
print("获取所有窗口句柄", handles)

# 判断不是当前网页句柄
for handle in handles:
    if handle != current_handle:

        # 切换定位窗口
        driver.switch_to.window(handle)

        # driver.switch_to是专门处理这一类的事物,如弹出框、切换表单和切换网页

        # A表单
        driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("admin")
        driver.find_element(By.CSS_SELECTOR, "#passwordA").send_keys("admin")
        driver.find_element(By.CSS_SELECTOR, ".telA").send_keys("18611112222")
        driver.find_element(By.CSS_SELECTOR, "#emailA").send_keys("123@qq.com")
        sleep(2)

sleep(2)
driver.quit()

6.截屏

import time

from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Edge()
url = r"D:\资料\web自动化_day01_课件+笔记+资料+代码\02_其他资料\注册实例.html"
driver.get(url)
driver.implicitly_wait(10)

driver.find_element(By.CSS_SELECTOR, "#user").send_keys("admin")

# 动态获取文件名,使用时间戳
# get_screenshot_as_file()为截屏方法,time.strftime()为时间戳,注意时间戳中的大小写
# ../image/%s.png为设置存储地址
driver.get_screenshot_as_file("../image/%s.png"%(time.strftime("%Y_%m_%d_%H_%M_%S")))

sleep(2)
driver.quit()

7.验证码

driver.add_cookie()中的BDUSS要去百度通过控制台中的Network内获取它的value,然后将值通过健子对的形式写入

import time

from selenium import webdriver
from time import sleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

# 三种方法add_cookie,get_cookies,get_cookie

driver = webdriver.Edge()

url = "https://www.baidu.com/"
driver.get(url)
driver.implicitly_wait(10)

driver.maximize_window()
# 在关闭浏览器后cookie的值会改变
# 用字典类型
driver.add_cookie({"name": "BDUSS","value": "VOeTFSck1rVm5jeXRXbHpDRHRiR1k5ZmVaMk1oUFhqaXJSQUdJWXlvZWtoZTVtSVFBQUFBJCQAAAAAAQAAAAEAAAAWzVZSY2hlbmd6aGVuZ"})

# 获取所有cookie值
coo = driver.get_cookies()
print(coo)
for co in coo:
    print(co)

# 获取name为BDUSS的cookie(get_cookie方法是基于get_cookies方法的,相当于在cookies中找BDUSS)
# coo=driver.get_cookie("BDUSS")
# print(coo)

sleep(2)

driver.refresh()

# 验证码很有必要,它可以防止恶意请求
# 但Selenium中没有对验证码处理方法
# 所以在测试的时候我们有四种方法可以选择,
# 分别是1.去掉验证码,
# 2.设置万能验证码,
# 3.使用验证码识别技术,
# 4.使用cookie解决(最优)

# 浏览器有了cookie记录后,可以跳过登录直接访问,直到cookie过期(cookie不禁用)


sleep(3)
driver.quit()

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值