python3 + selenium 之窗口切换
窗口切换
此代码来源学习后对淘宝操作实践记录:
以下代码在Chrome61和IE11上正常运行,Firefox5.7上运行存在一些问题须改进,应该是火狐不兼容差link_text部分和循环经常报错,在Firefox中建议少使用中文进行定位.
current = driver.current_window_handle #获取当前窗口句柄
current2 = driver.current_window_handle #点击跳转后获取跳转后窗口句柄
allchuang = driver.window_handles #点击跳转后获取所有窗口句柄
for hande in allchuang: if hande != current2:#判断如果不是跳转后窗口,那么切换到这个窗口driver.switch_to.window(hande) #跳转到这个窗口
句柄:你可以理解为能代表当前浏览器窗口的一串编号,通过获取的句柄你就可以灵活的进行窗口之间切换了
__author__ = 'Wei'
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()#正常运行
#driver = webdriver.Ie()#正常运行
#driver = webdriver.Firefox()#部分报错
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://www.taobao.com")
title = driver.title#title为当前页面标题
if title == '淘宝网 - 淘!我喜欢':print('成功跳转')
else:print('跳转失败')
driver.find_element_by_css_selector("#q").send_keys("手机壳")#在搜索框中输入手机壳
driver.find_element_by_css_selector(".btn-search").click()#点击淘宝搜索
sleep(2)
ddd = "window.scrollTo(0,200)"#设置右侧滚动条坐标
aaa = "window.scrollTo(0,500)"
bbb = "window.scrollTo(0,800)"
ccc = "window.scrollTo(0,1000)"
eee = "window.scrollTo(0, document.body.scrollHeight)" #滚动至底部
driver.execute_script(ddd)#调用滚动坐标
sleep(1)
driver.execute_script(aaa)
sleep(1)
driver.execute_script(bbb)
sleep(1)
driver.execute_script(ccc)
sleep(1)
driver.execute_script(eee)
sleep(1)
driver.execute_script(ddd)sleep(1)#等待一秒
driver.find_element_by_link_text("销量").click()#点击销量
sleep(1)
current = driver.current_window_handle#获取当前句柄
driver.find_element_by_link_text(u"锐舞iPhoneX手机壳苹果X新款10透明套硅胶防摔iPhone X女潮男超薄").click()#点击销量第一的店
current2 = driver.current_window_handle
allchuang = driver.window_handles#获取所有句柄for hande in allchuang:if hande != current or hande == current2:#判断跳转窗口driver.switch_to.window(hande)
driver.implicitly_wait(10)#隐式等待10秒
driver.maximize_window()#窗口最大化
panduan = driver.title
if "手机壳" in panduan:print("跳转成功222")
fff = "window.scrollTo(0,500);"#设置右侧滚动跳下拉500,并赋值
sleep(2)
driver.execute_script(fff)#调用滚动坐标
sleep(2)
driver.find_element_by_partial_link_text(u"苹果X【新银色】 送钢化膜★柔软不伤机").click()#选择款式 u代表让他默认UTF8格式
driver.find_element_by_xpath("//a[@id='J_LinkBasket']").click()#加入购物车
sleep(2)
xf = driver.find_element_by_css_selector(".j_minilogin_iframe")#此网页iframe没有id和name故使用class元素赋值然后访问
# xf = driver.find_element_by_xpath("//*[class ='j_minilogin_iframe']") #此处使用xpath方法未能找到元素
driver.switch_to.frame(xf)#进入框架
driver.find_element_by_xpath("//*[@id='J_Quick2Static']").click()#点击密码登陆
# driver.find_element_by_css_selector("#J_Quick2Static").click()
driver.find_element_by_xpath("//*[@id='TPL_username_1']").send_keys("weibgg")#输入账户
driver.find_element_by_xpath("//*[@id='TPL_password_1']").send_keys("123")#输入密码
driver.find_element_by_xpath("//*[@id='J_SubmitStatic']").click()#登录sleep(3)
driver.quit()
转载于:https://www.cnblogs.com/weibgg/p/10787038.html
python3 + selenium 之窗口切换相关推荐
- python页面切换_Python+Selenium学习--窗口切换及操作元素
场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...
- selenium的窗口切换
如何进入到新窗口进行提取? web.switch_to.window(web.window_handles[-1]) 关掉子窗口 web.close() 变更selenium窗口,回到原来的窗口 we ...
- selenium窗口切换
说明:本篇博客基于selenium 4.1.0 场景说明 场景:点击某个按钮后,页面是在一个新的浏览器中出现.如百度的'更多'按钮 问题:浏览器可能自动切换到了新页面,但是selenium的drive ...
- Web自动化测试Selenium(4)frame切换/窗口切换/选择框-2021-10-09
1. frame切换 1.1 问题描述 选择 class 属性值为 plant 的元素. elements = wb.find_element_by_css_selector('.plant') 表示 ...
- Selenium3 + Python3自动化测试系列——多窗口切换
多窗口切换 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作. WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切 ...
- Python+Selenium学习笔记8 - 多表单多窗口切换
1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 #coding = utf-8 2 3 from selenium importwebdriver4 importos5 im ...
- Selenium 窗口切换
在浏览网页的时候,有时点击一个链接或者按钮,会弹出一个新的窗口. 使用 Selenium 进行 Web 自动化测试,如果弹出新窗口时,没有对窗口进行切换,那么,WebDriver 对象 的焦点对应的, ...
- 【Selenium】切换/窗口切换
文章目录 1 frame切换 1.1 切换到frame 1.2 切回原来的主html 1.3 示例 2 窗口切换 2.1 切换新窗口 2.2 切回原来的窗口 2.3 示例 1 frame切换 1.1 ...
- selenium 自动化 携带cookies模拟登陆哔哩哔哩并发送弹幕和评论(解决多窗口切换、规避检测、评论无法输入等问题)
获取cookies之后就可以自动登陆到哔哩哔哩,点击搜索到的视频,然后输入弹幕,发送弹幕,再点击评论,发送评论,这里有个问题就是运行几次之后发现评论直接sed_keys的话,会出现输入不进去的情况,然 ...
最新文章
- 微信小程序组件 日历
- R语言nchar函数统计字符串中字符个数实战
- Import error: no module named cv2 错误解决方法
- spring aop 注入源码解析 1
- winCVS 使用方法
- java 获取permgen_java - Java:如何检查当前的Perm / PermGen大小? - 堆栈内存溢出
- Centos rsync配置
- discuz开发经验discuz x3 怎么在帖子列表显示论坛板块图标
- loadrunner11 中文破解版(附详细安装教程)
- java 单例模式实现的5种方式
- MySQL Binlog 【ROW】和【STATEMENT】选择(转)
- windows 安装应用时 弹出 another installation inprogress.you must complete that installation before continu
- 《文明之光》第六章读书笔记
- stm32f429之多通道ADC通过DMA数据采集
- Win11退Win10/重装Win10教程
- linux修改X2APIC参数,虚拟机对x2apic destination mode的选择
- 你知道吗?除了迅雷,这几款下载神器也不错!
- meshgrid()+plt.contourf()用法
- 网络信息安全技术的学习感悟
- 备战 2023 秋招,应届生应做好哪些准备,22道Java架构师面试题及答案分享