python自动化测试(三)

时间:2021-6-11 作者:qvyue

python自动化测试(三)

多层框架或窗口的定位

1、switch_to_frame

有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame中,seelnium webdriver 提供了一个switch_to_frame方法,可以很轻松的来解决这个问题。

# inner.html


    
        

document.getElementById("btn").onclick = function(){ var name = document.getElementById("name").value; window.alert(name); }
# outter.html


    
        
定位iframe

定位如下、

# 只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本的开发
# 将控制的 webdriver 的 Firefox 赋值给 browser;
driver = webdriver.Firefox()
# 打开本地页面
driver.get("http://127.0.0.1:8848/kk/outter.html")
# 只能等待 在一个时间范围内智能的等待
driver.implicitly_wait(5)
driver.switch_to_frame("inner")
driver.find_element_by_id("name").send_keys("python自动化测试")
driver.find_element_by_id("btn").click()
time.sleep(3)
driver.quit()

2、switch_to_window

有个需求、

1. 打开百度首页,点击登录按钮,点击立即注册按钮,打开新的窗口

2. 跳转到注册窗口,在注册窗口进行操作

3. 跳回到百度首页,点击登录弹出框的关闭按钮,在百度首页进行操作

第一步 打开百度、点击登陆、点击注册、

# coding=utf-8

from selenium import webdriver
import time

# 只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本的开发
# 将控制的 webdriver 的 Firefox 赋值给 browser;
driver = webdriver.Firefox()
driver.maximize_window()
# 打开百度 点击登陆 点击注册
driver.get("http://www.baidu.com")
# 获得当前窗口
current_window = driver.current_window_handle
# 点击登陆 link定位
time.sleep(2)
driver.find_element_by_xpath('//*[@id="s-top-loginbtn"]').click()
# 点击注册
time.sleep(2)
driver.find_element_by_link_text('立即注册').click()

然后在不同的页面 进行不同的操作

# coding=utf-8

from selenium import webdriver
import time

# 只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本的开发
# 将控制的 webdriver 的 Firefox 赋值给 browser;
driver = webdriver.Firefox()
driver.maximize_window()
# 打开百度 点击登陆 点击注册
driver.get("http://www.baidu.com")
# 获得当前窗口
current_window = driver.current_window_handle
# 点击登陆 link定位
time.sleep(2)
driver.find_element_by_xpath('//*[@id="s-top-loginbtn"]').click()
# 点击注册
time.sleep(2)
driver.find_element_by_link_text('立即注册').click()
# 获得所有窗口
all_windows = driver.window_handles
# 循环判断 不同的窗口执行不同的操作
for window in all_windows:
    if window != current_window: #不是百度主页 注册页面
        driver.switch_to.window(window)  # 跳转到注册窗口
        driver.find_element_by_id('TANGRAM__PSP_4__userName').send_keys('TOM')
        driver.find_element_by_id('TANGRAM__PSP_4__phone').send_keys('15188888888')
        driver.find_element_by_id('TANGRAM__PSP_4__password').send_keys('123456')
        time.sleep(3)
    if window == current_window:
        driver.switch_to.window(window)  # 跳转到百度首页窗口
        driver.find_element_by_id('kw').send_keys('python自动化')
        driver.find_element_by_id('su').click()
        time.sleep(3)
driver.quit()
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。