Selenium(三)_窗口切换,iframe内元素定位等

一.窗口切换

在实际自动化操作的过程中,我们可能操作浏览器打开很多窗口。
在这里插入图片描述

首先我们使用selenium自动化打开百度。然后我们获取当前的窗口,打印。以一串字符串的形式显示。
Selenium(三)_窗口切换,iframe内元素定位等_第1张图片

我们使用selenium搜索米兰,打开一个新的窗口。并打印此时所有的窗口。
Selenium(三)_窗口切换,iframe内元素定位等_第2张图片

我们想要点击新开窗口的首页超链接。

加上代码driver.switch_to.window(all_handles[-1]) 切换到第二个窗口,然后就能点击首页超链接。
Selenium(三)_窗口切换,iframe内元素定位等_第3张图片

我们可以使用all_handles = driver.window_handles 来获取所有的窗口,然后用类似访问列表元素的方式切换窗口。

二.有iframe时页面内元素定位

以网易邮箱为例,打开网易邮箱登录页,然后使用selenium在邮箱名处自动化输入内容。但是报错了。
Selenium(三)_窗口切换,iframe内元素定位等_第4张图片

这是因为页面内有iframe,要输入的用户名输入框是处于iframe下嵌套的html内的元素,无法直接获取。
Selenium(三)_窗口切换,iframe内元素定位等_第5张图片

添加如下两行代码,即可将driver聚焦到iframe,从而定位iframe下html内的元素。

i_frame = 	driver.find_element_by_tag_name('iframe')
driver.switch_to.frame(i_frame)

Selenium(三)_窗口切换,iframe内元素定位等_第6张图片

在执行完iframe内的操作后,添加如下代码将driver聚焦回原主页,返回原来的frame(frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架)。

driver.switch_to.default_content()    #聚焦回主页

Selenium(三)_窗口切换,iframe内元素定位等_第7张图片

你可能感兴趣的:(Selenium,selenium)