python-web自动化-元素操作:windows窗口切换 / alert切换 / iframe切换
1. windows窗口切换:切换到要操作的窗口
有多个窗口:
1. 触发新窗口的出现
2. 得知道新窗口是谁 -- 依据窗口的window_handle来识别窗口
3. 得到窗口的window_handle -- driver.window_handles(当前打开的所有窗口的句柄)
A. 得到的是一个有序列表
B. 新窗口: -1
4. 切换:driver.switch_to.window(要切换的窗口的句柄)
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time driver = webdriver.Chrome()
driver.get('https://www.baidu.com/') driver.find_element_by_xpath('//*[@id="kw"]').send_keys('许嵩')
driver.find_element_by_xpath('//input[@id="su"]').click()
#显示所有窗口
wins = driver.window_handles
time.sleep(3)
#打开新的窗口
driver.find_element_by_xpath('//*[@id="1"]/h3/a ').click()
#判断新窗口是否已经打开
WebDriverWait(driver,5,1).until(EC.new_window_is_opened(wins))
#切换窗口
# 1.获取所有窗口
wins1 = driver.window_handles
# 2.切换到新窗口
driver.switch_to.window(wins1[-1])
2. alert弹出框操作
(1)使用switch_to方法先切换到浏览器弹出框
driver.switch_to.alert
(2)Alert类提供了一系列的操作方法
dismiss(): 否
accept(): 是
text(): 获取弹出框里的文本内容
send_keys(): 在弹出框里输入文本
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# 在当前窗口/框架 同步执行javaScript
driver.execute_script("alert('这是一个alert弹框')")
#判断弹窗存在
alert = WebDriverWait(driver,10,1).until(EC.alert_is_present())
# driver.switch_to_alert().accept() #相当于点击“确定”
driver.switch_to_alert().dismiss() #相当于点击“取消”
# text=driver.switch_to_alert().text #获取弹窗框里面的文字
# print(text)
# driver.close()
3. iframe切换

步骤:
1.先确认你要操作的元素,是否存在与iframe中,如果元素在iframe中就需要切换
2.找到该iframe
3.切换到该iframe (两种方式)
第一种方式:有三种方法,只是单纯的切换
driver.switch_to.frame(1) #通过index(下标)
driver.switch_to.frame('login_frame_qq') #通过name
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@name="login_frame_qq"]')) #通过webelement
第两种方式:既等待元素可见又进行了iframe切换
WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it('login_frame_qq'))
4.切换完后,就以这个iframe中的html为主html
5.返回默认的html页面,无论现在在那一层的iframe,执行一次即可。
driver.switch_to.default_content()
完整代码如下:
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By driver = webdriver.Chrome()
driver.maximize_window() # 登录腾讯课堂页面
driver.get('https://ke.qq.com/course/list') # 点击首页登录
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[@id="js_login"]')))
driver.find_element_by_id("js_login").click() # 登录弹窗点击QQ登录
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[contains(@class,"btns-enter-qq")]')))
driver.find_element_by_xpath('//a[contains(@class,"btns-enter-qq")]').click() # iframe切换
# driver.switch_to.frame('login_frame_qq') #通过name
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@name="login_frame_qq"]')) #通过webelement # 弹窗点击账户密码登录
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[@id="switcher_plogin"]')))
driver.find_element_by_xpath('//a[@id="switcher_plogin"]').click()
python-web自动化-元素操作:windows窗口切换 / alert切换 / iframe切换的更多相关文章
- python - web自动化测试 - 元素操作 - 窗口切换
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 元素操作-切换.py @ide: PyCharm Community ...
- python - web自动化测试 - 元素操作 - 鼠标键盘
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 鼠标操作.py @ide: PyCharm Community Edi ...
- python - web自动化测试 - 元素操作 - 等待
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: wait.py @ide: PyCharm Community Edi ...
- python - web自动化测试 - 元素操作 - 定位
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: find_ele.py @ide: PyCharm Community ...
- Web自动化 - 选择操作元素 2
文章转自 白月黑羽教Python 前面我们看到了根据 id.class属性.tag名 选择元素. 如果我们要选择的 元素 没有id.class 属性, 这时候我们通常可以通过 CSS selector ...
- Web自动化 - 选择操作元素 1
文章转自 白月黑羽教Python 所有的 UI (用户界面)操作 的自动化,都需要选择界面元素. 选择界面元素就是:先让程序能找到你要操作的界面元素. 先找到元素,才能操作元素. 选择元素的方法 程序 ...
- web自动化之浏览器的窗口切换
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from seleni ...
- 【Python web自动化】之读取配置文件参数,利用cookie返回值进行跳过验证码进行登录操作
当进行Python的Web自动化时,会涉及到验证码问题,该如何跳过执行呢,下面请看代码: 1.首先新建配置文件*.ini格式 config.ini [db] #基础地址: baseurl = http ...
- autoit 简单使用-- 操作windows窗口
autoit 简单使用 autoit中文交流论坛: http://www.autoitx.com/index.php 1 下载 autoit 中文安装包 : https://yunpan.cn/OcP ...
随机推荐
- Linux内核分析--理解进程调度时机、跟踪分析进程调度和进程切换的过程
ID:fuchen1994 姓名:江军 作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否 ...
- ubuntu 16.04 安装brackets
1 github 上下载deb包 2 双击deb包但是安装不了(无任何提示,是因为缺少lib文件) 网上给出的解决方案 使用debtool 接压 deb包 把缺少的lib复制进去 配置文件中去掉该 l ...
- java 集合之set。
Set具有与Collection完全一样的接口,因此没有任何额外的功能,不象前面有两个不同的List.实际上Set就是Collection,只是行为不同.(这是继承与多态思想的典型应用:表现不同的行为 ...
- 洛谷p1067
题目https://www.luogu.org/problemnew/show/P1067 #include<iostream> #include<cstdio> #inclu ...
- disjoint set
MAKE-SET.x/ creates a new set whose only member (and thus representative) is x. Since the sets are d ...
- 初见 fultter for MAC
第一步:下载flutter https://flutter.io/docs/development/tools/sdk/archive?tab=macos#macos 第二步:(development ...
- switch语句判断学生成绩
下面通过判断学生成绩来展示switch语句的使用. Q:判断学生成绩的等级,90-100分为A级,80-89为B级,70-79为C级,60-69为D级,60以下不及格. package main im ...
- robot framework下载文件操作
不同的浏览器点击[下载]按钮之后,需要点击保存,还是确定,或者直接默认直接下载都是不一样的 1.chrome:点击[下载]之后,会自动执行下载操作,直到下载结束 A)点击下载,等待下载结束(sleep ...
- kafka-producer配置
kafka-producer版本对比 Kafka的producer的API根据版本的不同分为kafka0.8.1.X之前的 kafka.javaapi.producer.Producer.以及之后版本 ...
- 随机数的组合问题(JavaScript描述)
随机数的组合问题在面试时是经常考的,比如之前我就被问到:“有一个可以生成1-5的随机数函数,怎样把它扩大到1-7?” 在解决这个问题之前,先来看看另外一个比较简单的问题:“有一个可以生成1-7的函数, ...