找回密码
 立即注册

QQ登录

只需一步,快速开始

Python Selenium如何切换浏览器的页面

2024-11-5 02:29| 发布者: 8b79| 查看: 379| 评论: 0

摘要: 目录1. 获取所有标签页句柄,并切换到特定标签页:2. 打开新标签页,并毗连新的网址:3.示例代码附:定位单个网页元素总结我们在爬网使用Selenium进行测试的时间,偶然间想要点击浏览器里面的网址,跳到另
目录

我们在爬网使用Selenium进行测试的时间,偶然间想要点击浏览器里面的网址,跳到另一个页面上,获取第二个页面的内容。


可是偶然间从官网进去,点击跳转到下一个页面以后,却没法定位到下一个页面的元素,这时间就需要在多个浏览器标签页或窗口之间切换了,以下是切换浏览器页面的方法,这里主要使用的是[code]window_handles[/code]进行切换:

1. 获取所有标签页句柄,并切换到特定标签页:

如果是需要点击页面的某个元素进入到下一页,需要定位到跳转下一个浏览器页面的元素,点击后,等待获取所有的浏览器标签页的句柄。

[code]from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建WebDriver实例,指定WebDriver的路径 driver = webdriver.Chrome(executable_path='path/to/chromedriver') # 打开目标网页 driver.get('https://XXX.com') # 等待页面加载完成,然后定位元素 element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, ''))) # 点击元素 element.click() # 等待新窗口打开,获取新窗口的句柄 WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1) [/code]

使用[code]driver.window_handles[/code]来获取当前浏览器所有打开的标签页的句柄列表,这意味着可以看到当前的浏览器有多少个页面,最后以列表的形式呈现出来。

[code]tabs = driver.window_handles print(tabs) print(len(tabs)) #打印列表的个数 [/code]

接着使用[code]driver.switch_to.window()[/code]方法,传入标签页句柄的位置,来切换到特定的标签页。

[code]driver.switch_to.window(tabs[1]) # 切换到第二个标签页 driver.switch_to.window(tabs[2]) # 切换到第三个标签页 [/code]

在新标签页中实行完操作后,可以关闭它并返回到原来的标签页,否则如果打开过多,可能会导致计算机资源不足,从而影响其他应用程序的性能,甚至可能导致浏览器或操作系统变慢或崩溃。

[code]driver.close() # 关闭当前标签页 driver.switch_to.window(tabs[0]) # 切换回第一个标签页 [/code]

2. 打开新标签页,并毗连新的网址:

可以使用JavaScript来打开一个新标签页,并主动切换到新的空缺标签页。

[code]driver.execute_script("window.open();") [/code]

然后获取新的标签页句柄并切换:

[code]new_tab = driver.window_handles[-1] # 新标签页通常是列表中的最后一个 driver.switch_to.window(new_tab) [/code]

然后毗连目标的网址,最后关闭这个窗口并返回到原来的标签页。

[code]driver.close() # 关闭当前标签页 driver.switch_to.window(tabs[0]) # 切换回第一个标签页 [/code]

3.示例代码

点击网页元素,实现跳转的代码:

[code]from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建WebDriver实例,指定WebDriver的路径 driver = webdriver.Chrome(executable_path='path/to/chromedriver') # 打开目标网页 driver.get('https://XXX.com') # 等待页面加载完成,然后定位元素 element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, ''))) # 点击元素 element.click() # 等待新窗口打开,获取新窗口的句柄 WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) > 1) driver.switch_to.window(driver.window_handles[-1]) # 切换到新标签页 #进行下一步对新标签页的操作,此部分自行编辑 # 关闭新标签页并返回到原标签页 driver.close() driver.switch_to.window(driver.window_handles[0]) # 切换回原标签页 # 关闭新窗口 driver.close() # 最后,关闭浏览器 driver.quit() [/code]

新建空缺窗口后,毗连网址的代码:

[code]from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 创建WebDriver实例,指定WebDriver的路径 driver = webdriver.Chrome(executable_path='path/to/chromedriver') # 打开目标网页 driver.get('https://XXX.com') sleep(3) driver.execute_script("window.open();") driver.switch_to.window(driver.window_handles[-1]) # 切换到新窗口 # 在新窗口中进行操作... driver.get("http://www.XXX2.com") sleep(3) # 切换回原标签页 driver.switch_to.window(driver.window_handles[0]) # 关闭新窗口 driver.close() # 最后,关闭浏览器 driver.quit() [/code]

请留意,差别的浏览器可能在处理标签页和窗口时有细微的差别,在使用的过程中,留意浏览器的区别,上面使用的是谷歌浏览器。

附:定位单个网页元素

1.1 通过 id 定位网页元素

[code]import time from selenium import webdriver from selenium.webdriver import Keys from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 打开 chrome 浏览器 driver.get("https://www.baidu.com/") input = driver.find_element(By.ID,"kw") input.send_keys('大数据就业远景') input.send_keys(Keys.ENTER) time.sleep(10) driver.quit()[/code]

1.2 通过 path 定位单个网页元素

1)网页对象path获取方法

2)代码案例

[code]import time from selenium import webdriver from selenium.webdriver import Keys from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 打开 chrome 浏览器 driver.get("https://www.baidu.com/") input = driver.find_element("xpath","/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input") # 指定搜刮栏中的内容 input.send_keys("大数据就业远景") # 相称于回车键 input.send_keys(Keys.ENTER) # 设置网页停顿时间 time.sleep(30) driver.quit()[/code]

总结

到此这篇关于Python Selenium如何切换浏览器的页面的文章就介绍到这了,更多相关Selenium切换浏览器页面内容请搜刮脚本之家以前的文章或继承浏览下面的相关文章盼望大家以后多多支持脚本之家!


来源:https://www.jb51.net/python/328866c0u.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

最新评论

关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-1 18:54 , Processed in 0.037339 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部