<注意>iframe框架

iframe也称作嵌入式框架,嵌入式框架和框架网页类似,它可以把一个网页的框架和内容嵌入在现有的网页中。

框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题。这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。

一、弹出窗口定位:弹出的窗口采用二次定位的方法定位窗口中元素

 #coding=utf-8
from selenium import webdriver
import time driver = webdriver.Chrome()
driver.get("http://www.baidu.com/")
#点击登录链接
time.sleep(3)
driver.find_element_by_link_text(u"登录").click()
#通过二次定位找到用户名输入框
time.sleep(3)
#div=driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__form']").find_element_by_name("userName") #第1种xpath定位方法
#div=driver.find_element_by_id('TANGRAM__PSP_8__form').find_element_by_name("userName") #第2种id定位方法
div=driver.find_element_by_id('TANGRAM__PSP_2__content').find_element_by_name("userName") #第3种id定位方法
#div=driver.find_element_by_class_name("tang-content").find_element_by_name("userName")
div.send_keys("username")
#输入登录密码
driver.find_element_by_name("password").send_keys("password")
#点击登录
driver.find_element_by_id("TANGRAM__PSP_10__submit").click()
driver.quit()

二、浏览器多窗口处理(如果第二个页面打开了新窗口,那么继续执行的操作程序不能判断是在哪个窗口引出的,所以引出多窗口打开概念)

 #coding=utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com/")
#获得当前窗口%
nowhandle=driver.current_window_handle
#打开注册新窗口
driver.find_element_by_link_text(u"京公网安备11000002000001号").click()
#获得所有窗口%
allhandles=driver.window_handles
#循环判断窗口是否为当前窗口
for handle in allhandles:
if handle != nowhandle:
driver.switch_to_window(handle)
print('now news window!')
#切换到邮箱注册标签
#driver.find_element_by_id("mailRegTab").click()
time.sleep(5)
driver.close()
#回到原先的窗口
driver.switch_to_window(nowhandle)
print('now baidu window!')
#driver.find_element_by_id("kw").send_keys(u"注册成功!")
time.sleep(3)
print('the end!')
driver.quit()

三、遮罩

 #coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
driver = webdriver.Chrome()
driver.get("http://www.baidu.com/")
#点击打开搜索设置
driver.find_element_by_link_text(u"设置").click()
driver.find_element_by_link_text(u"搜索设置").click() #点击保存设置
sleep(3) #此处必须加休眠时间,如果不加,会失败运行
driver.find_element_by_class_name("prefpanelgo").click()
#获取网页上的警告信息
alert=driver.switch_to_alert()
#接收警告信息
sleep(3)
alert.accept()
driver.quit()

四、下拉框处理

定位下拉框的时候需要用到二次定位,首先需要定位到下拉框的框框,然后再定位待选择的元素,后执行click()操作即可实现。

例子:

 #coding=utf-8
from selenium import webdriver
import os,time
driver= webdriver.Firefox()
file_path = 'file:///' + os.path.abspath('drop_down.html')
driver.get(file_path)
time.sleep(2)
#先定位到下拉框
m=driver.find_element_by_id("ShippingMethod")
#再点击下拉框下的选项
m.find_element_by_xpath("//option[@value='10.69']").click()
time.sleep(3)
driver.quit()

五、分页处理

【举例】分页下拉框形式举例

 #获取所有分页的数量,并打印
total_pages=len(driver.find_element_by_tag_name("select").find_elements_by_t
ag_name("option"))
print "total page is %s" %(total_pages)
sleep(3)
#再次获取所分页,并执行循环翻页操作
pages=driver.find_element_by_tag_name("select").find_elements_by_tag_name("o
ption")
for page in pages:
page.click()
sleep(2)

六、上传文件

 #coding=utf-8
from selenium import webdriver
import os,time
driver = webdriver.Chrome()
#打开上传文件页面
file_path = 'file:///' + os.path.abspath('upload_file.html') #上传页面
driver.get(file_path)
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\Scripts\many_windows-ok.py') #file为上传按钮的name,后面的为路径文件
time.sleep(2)
driver.quit()

七、下载文件

 #coding=utf-8
import os
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
fp = webdriver.FirefoxProfile() #我们通过webdriver提供的一个火狐浏览器设置的方法把方法传递给fp
fp.set_preference("browser.download.folderList",2) #通过fp中set方法找到火狐的相关设置项把设置项做修改,
fp.set_preference("browser.download.manager.showWhenStarting",False)#
fp.set_preference("browser.download.dir", os.getcwd()) #指定类型的属性
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream") #指定路径的属性
browser = webdriver.Firefox(firefox_profile=fp) #获取浏览器的变量,把fp设置传递火狐的方法里,设置就ok
#访问待下载路径及文件
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-3").click()

八、调用JS

九、cookie处理

cookie是什么?

答:cookie是程序写在浏览器中的信息,比如登录时候写在浏览器的用户名密码,然后网站下次登录就会读取cookie看看是否有登录信息。

【Python虫师】多窗口定位的更多相关文章

  1. 原生JS和JQ窗口定位属性对照表

    位置 javascript jquery 兼容性 窗口位置离屏幕左偏移 var leftPos = (typeof window.screenLeft == "number") ? ...

  2. python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐(二)

    在上一篇blog:python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 中介绍了python中的tkinter的一些东西,你可能对tkinter有一定的了解了.这篇b ...

  3. appium+python自动化50-生成定位对象模板templet(jinja2)

    前言 每次自己写pageobject定位元素对象太繁琐,格式都差不多,只是换个定位方法,这种就可以才有模板的方式,批量生成pageobject定位元素对象的模板 python里面生成模板有两个模块可以 ...

  4. python+selenium 元素被定位到而且click()也提示执行成功,但是页面就是没有变化和跳转。

    python+selenium 元素被定位到而且click()也提示执行成功,但是页面就是没有变化和跳转. 如果多次定位和click(),有时候会跳转. 我遇到很多次就是很郁闷,有人说,操作太快的,页 ...

  5. Python win32gui调用窗口到最前面

    Python win32gui调用窗口到最前面 0要写一个轮询几个重要页面的程序,不停的在大屏上进行刷新,通过pywin32模块下的SetForegroundWindow函数调用时,会出现error: ...

  6. Selenium2+python自动化13-多窗口、句柄(handle)

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 本篇以打开百 ...

  7. selenium python 一些操作和定位收集

    (—)滚动条操作 python中selenium操作下拉滚动条方法汇总 selenium_webdriver(python)控制浏览器滚动条 selenium+Python(select定位) Sel ...

  8. Selenium2+python自动化13-多窗口、句柄(handle)【转载】

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...

  9. python 图片滑动窗口

    METHOD #1: No smooth, just scaling. def pyramid(image, scale=1.5, minSize=(30, 30)): # yield the ori ...

随机推荐

  1. RAC的搭建(二)--创建ASM磁盘

     1. 规划 表决磁盘: 1Gx3(3节点以下,建议都采用这种配置,三个磁盘加起来要大于1.8G,否则会报错) 数据磁盘: 10Gx1 闪回磁盘: 5Gx1 2. 创建共享磁盘 virtualBox上 ...

  2. 【译】Kafka最佳实践 / Kafka Best Practices

    本文来自于DataWorks Summit/Hadoop Summit上的<Apache Kafka最佳实践>分享,里面给出了很多关于Kafka的使用心得,非常值得一看,今推荐给大家. 硬 ...

  3. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...

  4. 学习下新塘M0芯片的下载方法

    编程方式多种多样,解释这几种方式的原理,方便做后续的回答: 一.脱机 脱机的意思就是脱离PC机,有很多芯片必须连接PC才能烧录,比如某些FPGA芯片.MCU芯片.NAND Flash芯片等.脱机和在线 ...

  5. Java面试题全集

    Java面试题全集(上) Java面试题全集(中) Java面试题全集(下) http://www.importnew.com/21445.html

  6. js 简易模板引擎 , 持续更新。。。

    <script> var _mytpl = (function(){ var _verson = 1.0; return { _data:{}, load:function(html,da ...

  7. windows7内核分析之x86&x64第二章系统调用

    windows7内核分析之x86&x64第二章系统调用 2.1内核与系统调用 上节讲到进入内核五种方式 其中一种就是 系统调用 syscall/sysenter或者int 2e(在 64 位环 ...

  8. DLL注入之Appinit_Dlls

    AppInit_DLLs is a mechanism that allows an arbitrary list of DLLs to be loaded into each user mode p ...

  9. android checkbox样式

    1. 首先要导入你准备用作CheckBox选中和补选中状态的两图片到res的drawable中,如checkbox_checked.png,checkbox_normal.png: 2. 在res/d ...

  10. c++ 纯虚析构函数

    ; 这就是一个纯虚析构函数,这种定义是允许的. 一般纯虚函数都不允许有实体,但是因为析构一个类的过程中会把所有的父类全析构了,所以每个类必有一个析构函数. 所以.纯虚析构函数需要提供函数的实现,而一般 ...