窗口切换



此代码来源学习后对淘宝操作实践记录:

以下代码在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()

python3 + selenium 之窗口切换的更多相关文章

  1. Python3 Selenium多窗口切换

    Python3 Selenium多窗口切换 以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接. 在WebDriver中封装了获取当前窗 ...

  2. Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  3. selenium webdriver窗口切换(上)

    selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...

  4. selenium webdriver窗口切换(下)

    多窗口切换有时候需要在不同的窗口切换,从而操作不同的窗口上的元素.在selenium1.0 中这个问题比较难处理.但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口. ...

  5. Selenium 多窗口切换

    我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...

  6. Selenium多窗口切换代码

    # #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2020/7/31 16:05 # @Author : Gengwu # @FileNam ...

  7. python之selenium多窗口切换

    前提: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这就需要主机切换到新打开的窗口上.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 内容: 以 ...

  8. selenium多窗口切换定位

    from selenium import webdriverimport unittest,time,refrom selenium.webdriver.common.keys import Keys ...

  9. selenium 多窗口切换(windows)

    在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗口进行操作..WebDriver 提供了switchTo() ...

随机推荐

  1. linux中vi的基本操作

    在vi如何查找文字 vi redis.config 在命令模式下 按 / 然后最下方会出现/ 打出你所需要查找的字.n 是代表查找下一个 如何撤销上一步的操作 1,退出编辑操作 按esc键 2,按u ...

  2. iPhone电源键坏了怎么开机和关机?

    一.开机 1.将USB数据线插到iPhone上,此时先不要将另一头插到电脑上 2.长按Home键不要动 3.将数据线的另一头插到电脑上 这时iPhone就会自动开机 二.关机 1.进入设置找到“通用” ...

  3. LaTeX简历模板

    %# -*- coding:utf-8 -*- %% start of file `template_en.tex'. %% Copyright 2006-1008 Xavier Danaux (xd ...

  4. 【★★★★★】提高PHP代码质量的36个技巧

    http://www.cnblogs.com/52php/p/5658031.html 不要直接使用 $_SESSION 变量 某些简单例子: $_SESSION['username'] = $use ...

  5. 解决IntelliJ IDEA无法读取配置*.properties文件的问题

    idea对这些配置的文件方式很明显和eclipse是不同的.在idea中有一个 Content Roots的概念.需要为每一个folder配置相应的Content Roots.Content Root ...

  6. 用Emacs的这些年

    读技术博客时发现又有人提起我曾写的那篇口水文章 为何Emacs和Vim被称为两大神器.写那篇文章时,我还在Vim和Emacs之间摇摆.当然主要在用vim,博士学位论文和所有的国际会议文章都是用Vim编 ...

  7. php+mysql注入

    SQL简单命令介绍: mysql.exe -u 用户名  -p  密码  -h  ip地址 show databases;查看数据库 select version();php注入下的版本号 use d ...

  8. ActiveMQ集群

    1.ActiveMQ集群介绍 1.为什么要集群? 实现高可用,以排除单点故障引起的服务中断 实现负载均衡,以提升效率为更多客户提供服务 2.集群方式 客户端集群:让多个消费者消费同一个队列 Broke ...

  9. ssh Jetson tk1

    背景: 因为TK1要放到智能车上,不方便打开roscore和各个节点,因此需要PC远程控制. 方法: 在PC端用ssh命令登录: (1)命令sudo ssh tegra-ubuntu.local(te ...

  10. 基于theano的降噪自动编码器(Denoising Autoencoders--DA)

    1.自动编码器 自动编码器首先通过下面的映射,把输入 $x\in[0,1]^{d}$映射到一个隐层 $y\in[0,1]^{d^{'}}$(编码器): $y=s(Wx+b)$ 其中 $s$ 是非线性的 ...