窗口切换



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

以下代码在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. Python基础【day03】:集合入门(三)

    本节内容 1.集合常用方法总结2.定义3.关系测试 集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合 ...

  2. 学习windows编程 day4 之 自定义映射

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  3. 在 github 新建一个文件夹

    创建新文件的时候名字后面加个斜杠(/)就可以了.

  4. css postion 属性区别【原】

    CSS样式中的postion元素有四个属性,即static | absolute | fixed | relative. static: 默认值.无特殊定位,遵循HTML基本定位规则 . fixed: ...

  5. Study 1 —— Python简介

    Python与其他语言的区别C\C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动.嵌入式.游戏引擎开发等领域有广泛的应用:JAVA:目前使用最广泛的编程语言,第一个跨平台运行的语言,在大型E ...

  6. resultMap自定义某个javaBean的封装规则代码

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  7. .net 加密与解密

    public class Encrypts { /// <summary> /// 构造方法 /// </summary> public Encrypts() { } /// ...

  8. 【Gradle】Gradle环境配置

    Windows环境 下载 作者下载的是gradle-4.1-all.zip,下载地址:http://services.gradle.org/distributions 环境配置 GRADLE_HOME ...

  9. SRS服务器搭建,ffmpeg 本地推流,srs从本地拉流

    参考: https://github.com/ossrs/srs/wiki/v2_CN_SampleFFMPEG git clone https://github.com/ossrs/srs cd s ...

  10. linux内核capable源代码分析【转】

    转自:https://blog.csdn.net/sanwenyublog/article/details/50856849 linux内核里对于进程的权限管理有一个很重要的函数capable,以前看 ...