<注意>iframe框架

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

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

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

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

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

1 #coding=utf-8
2 from selenium importwebdriver3 importtime4 driver =webdriver.Chrome()5 driver.get("http://www.baidu.com/")6 #获得当前窗口%
7 nowhandle=driver.current_window_handle8 #打开注册新窗口
9 driver.find_element_by_link_text(u"京公网安备11000002000001号").click()10 #获得所有窗口%
11 allhandles=driver.window_handles12 #循环判断窗口是否为当前窗口
13 for handle inallhandles:14     if handle !=nowhandle:15 driver.switch_to_window(handle)16         print('now news window!')17         #切换到邮箱注册标签
18         #driver.find_element_by_id("mailRegTab").click()
19         time.sleep(5)20 driver.close()21 #回到原先的窗口
22 driver.switch_to_window(nowhandle)23 print('now baidu window!')24 #driver.find_element_by_id("kw").send_keys(u"注册成功!")
25 time.sleep(3)26 print('the end!')27 driver.quit()

三、遮罩

1 #coding=utf-8
2 from selenium importwebdriver3 from selenium.webdriver.common.action_chains importActionChains4 from time importsleep5 driver =webdriver.Chrome()6 driver.get("http://www.baidu.com/")7 #点击打开搜索设置
8 driver.find_element_by_link_text(u"设置").click()9 driver.find_element_by_link_text(u"搜索设置").click()10
11 #点击保存设置
12 sleep(3) #此处必须加休眠时间,如果不加,会失败运行
13 driver.find_element_by_class_name("prefpanelgo").click()14 #获取网页上的警告信息
15 alert=driver.switch_to_alert()16 #接收警告信息
17 sleep(3)18 alert.accept()19 driver.quit()

四、下拉框处理

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

例子:

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

五、分页处理

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

1 #获取所有分页的数量,并打印
2 total_pages=len(driver.find_element_by_tag_name("select").find_elements_by_t3 ag_name("option"))4 print "total page is %s" %(total_pages)5 sleep(3)6 #再次获取所分页,并执行循环翻页操作
7 pages=driver.find_element_by_tag_name("select").find_elements_by_tag_name("o
8 ption")
9 for page inpages:10 page.click()11 sleep(2)

六、上传文件

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

七、下载文件

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

八、调用JS

九、cookie处理

cookie是什么?

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

转载于:https://www.cnblogs.com/zhuzhubaoya/p/7082360.html

【Python虫师】多窗口定位相关推荐

  1. 手把手带你学python自动化测试(六)——多层窗口定位

    多层框架定位 在 web 的自劢化测试工作中,通常会碰到一个元素无法定位的问题,检查了徆多次, 依然得丌到解决,此时就需要了解下 html 的 frame 框架了, frame 可以实现一个窗口 中显 ...

  2. Python selenium根据class定位页面元素,xpath定位

    Python selenium根据class定位页面元素 在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写 ...

  3. 如何打开python的交互窗口-Python多版本情况下四种快速进入交互式命令行的操作技巧...

    原标题:Python多版本情况下四种快速进入交互式命令行的操作技巧 因为工作需求或者学习需要等原因,部分小伙伴的电脑中同时安装了Python2和Python3,相信在Python多版本的切换中常常会遇 ...

  4. python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法

    1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome ...

  5. python弹出窗口 闪烁_Python。得到闪烁/闪烁的窗口

    首先,大多数程序通过调用^{}(或包装它的高级函数)来刷新窗口.但是,有一些应用程序主要来自微软,他们做一些定制的东西,在终端用户看来就像是在闪窗,但在封面下看起来可能不一样.希望你不在乎任何这样的定 ...

  6. python2中文输出代码_解决vscode python print 输出窗口中文乱码的问题

    解决vscode python print 输出窗口中文乱码的问题 发布时间:2020-09-17 23:53:25 来源:脚本之家 阅读:119 一.搭建 python 环境 在 VSC 中点击 F ...

  7. Python笔记-pyautogui 图片定位

    Python笔记-pyautogui 图片定位 import os import time import pyautogui pyautogui.PAUSE = 1def im_click():try ...

  8. 如何打开python的终端窗口,python程序窗口怎么打开

    python软件如何开启 谷歌人工智能写作项目:小发猫 python怎么打开一个终端窗口 如何进入python交互界面 Python交互模式有两种:图形化的交互模式或者命令行的交互模式.打开步骤:首先 ...

  9. Python tkinter多窗口的交互问题:子窗口无法获取数据

    Python tkinter多窗口的交互问题:子窗口无法获取数据 tkinter第二个.第三个子窗口数据不能交互响应的解决方法 先说结论:第二个.第三个子窗口生成时,不能用tk.Tk(),而应改为tk ...

最新文章

  1. 云从科技完成B+轮超10亿元融资,多个国家基金进入
  2. 比尔盖茨NEJM发文:新冠肺炎是百年一遇的流行病!全世界应该如何应对?
  3. 好好说一说室内定位技术
  4. 一类SG函数递推性质的深入分析——2018ACM陕西邀请赛H题
  5. 10W字!推荐一个牛逼的人工智能笔记教程!全部整理好了(附下载)!
  6. 云计算学习笔记---异常处理---hadoop问题处理ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.NullPoin
  7. 软件质量保证与测试(什么是图灵测试)
  8. java中的堆和栈_实例理解Java中的堆和栈
  9. python语言要多久_怎么自学python,大概要多久?
  10. register 寄存器变量
  11. 苹果手机密码锁如何解锁
  12. Spring工作原理
  13. BIM技术优秀论文14篇
  14. vue连线 插件_使用jsPlumb插件实现动态连线功能
  15. autoCAD 向图形中添加文字
  16. 算法时间复杂度符号分析(O、o、Ω、ω、Θ)
  17. 华为智慧屏鸿蒙评测,搭载鸿蒙系统的荣耀智慧屏值得入手吗?荣耀智慧屏全面评测...
  18. 安卓手机可以连接斑马系统吗_安卓手机与carplay互联,安卓手机怎么连carplay
  19. java学习笔记————SSH
  20. 【转】MyEclipse8优化设置

热门文章

  1. C++杂记(一)——常见知识总结
  2. 云计算行业前景好不好 如何成为云计算专业人才
  3. 国内首次!完成4K超高清电视5G网络传输测试
  4. 【题解】vijos1093 文科生的烦恼
  5. 在有赞做java有发展吗_响应式架构与 RxJava 在有赞零售的实践
  6. 对局匹配(动态规划)
  7. Android中的Adapter
  8. 给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题
  9. 【PIL】图像分割竞赛中8位深调色板模式的mask读取与保存(PASCAL VOC)
  10. 图像处理之Bolb分析(一)