在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 以百度首页为例: from selenium import webdriver import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.baidu.com") #获得百度搜索…
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time driver = webdriver.Firefox()driver.get("http://bj.ganji.com/")time.sleep(3) 1.获取句柄 # 获取当前的handle名字handle = driver.current_window_handleprint(f"获取到当前的handle…
在selenium中,我们会遇到一些问题,就是多窗口处理的问题,我们爬取的内容在一个新窗口上,这个时候,我们就需要先切换到这个新的窗口上,然后进行抓取内容. 如何切换呢? 首先,获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别. 2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换.但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了. 3.获取当前页面的句柄:driver.current_window_h…
#coding=utf-8 from selenium import webdriver import time from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get('https://www.imooc.com/user/newlogin/from_url/') driver.find_element_by_name('email').sen…
要在多个窗口直接切换,首先获取每个窗口的唯一标示符(句柄),通过窗口属性可以获取所有打开窗口的标示符,以集合的形式返回:以下示例:       Set<String> winHandels = driver.getWindowHandles(); // 得到当前窗口的set集合     List<String> it = new ArrayList<String>(winHandels); // 将set集合存入list对象     driver.switchTo().…
有时,使用selenium  定位页面元素时,浏览器明明打开的是需要定位的页面,但就是定位不到元素.打印一下元素page_source,会发现源码与页面不同. 主要问题是页面没有加载完成导致,需要设置一个等待时间.所以正常情况下,只要click()点击后有页面跳转,在driver.switch_to.window(driver.window_handles[0]) 切换到新页面前,最好设置一下等待时间.防止获取不到元素 切换到最新窗口: n=driver.window_handles #获取当前…
定位一组元素 和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_partia…
豆瓣原创电子书每周推出数十本限时免费数目,一周免费期过后恢复原价.想着豆瓣原创书中有不少值得一看,便写了个脚本,免去一个个添加的烦恼. 使用了Windows下selenium+Python的组合,有较多的文档可以查阅,主要总结如下: 1.使用chrome浏览器:下载旧版本(52),新版本不兼容,下载chromedriver,放入chrome安装目录,于chrome.exe同目录,并添加到Path环境变量. 2.强大的元素定位:通过浏览器审查元素直接复制的xpath多为绝对定位,容易受网页结构调整…
多表单切换 >>在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe 表单内嵌页面上的元素无法直接定位.这时就需要通过suitch_to.frame()方法将当前定位的主体切换为frame/iframe表单的内嵌页面 中. #Author:xiaoxiao from selenium import webdriver def setUp(self): # 打开浏览器 self.driver = we…
一.多窗口切换 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switch_to.window()方法.可以实现在不同的窗口之间切换.以百度和百度注册页为例,在两个窗口之间切换 #coding:utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver=webdriver.Chr…