Validus A dead simple Python data validation library.…
Python:如何使用Selenium在IFrame之间切换, Selenium获取IFrame, webdriver, How to Switch Between IFrames Using Selenium Python
当我们希望在网页上托管来自外部来源的内容时,我们更喜欢使用IFrame。它可以是图像,视频,其他供应商的广告,突出显示某些信息等。
HTML提供了“ <iframe> </ iframe>”标签来标识HTML文档中的IFrame。
使用Selenium Python在Iframe之间切换

如果一个网页包含多个iframe,则需要在它们之间进行切换。Selenium Python API提供了“ switch_to.iframe (self, frame_reference) ”方法来移至特定的IFrame。
driver.switch_to.iframe(self,frame reference)
“<frame_reference>”参数是用于标识该IFrame的定位器。
让我们看一个示例HTML代码,它将在网页中创建多个IFrame。
<!DOCTYPE html> <html> <head> <title>Switching Between IFrames Demo</title> </head> <body> <h1>Welcome Viewers</h1> <iframe name="frame1" id="FR1" src="//www.techbeamers.com" height="500" width="400"> </iframe> <iframe name="frame2" id="FR2" height="500" width="400" src="http://www.seleniumhq.org"> </iframe> </body> </html>
此网页中嵌入了两个IFrame。要首先在上述IFrame之间进行切换,我们必须在网页上找到它们。看一下代码;它提供了三种不同的机制来执行此操作。他们是。
–通过使用标签名称(在本例中为“ iframe”)
–使用IFrame的ID
–使用IFrame的名称
这是在帧之间执行切换的指定代码段。
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time driver = webdriver.Firefox() driver.maximize_window() location = "file://<Specify Path to IFrame.HTML>" driver.get(location) ########Section-1 # get the list of iframes present on the web page using tag "iframe" seq = driver.find_elements_by_tag_name('iframe') print("No of frames present in the web page are: ", len(seq)) # switching between the iframes based on index for index in range(len(seq)): driver.switch_to_default_content() iframe = driver.find_elements_by_tag_name('iframe')[index] driver.switch_to.frame(iframe) driver.implicitly_wait(30) # highlight the contents of the selected iframe driver.find_element_by_tag_name('a').send_keys(Keys.CONTROL, 'a') time.sleep(2) # undo the selection within the iframe driver.find_element_by_tag_name('p').click() driver.implicitly_wait(30) driver.switch_to.default_content() ########Section-2 # switch to a specific iframe (First frame) using Id as locator iframe = driver.find_element_by_id('FR1') driver.switch_to.frame(iframe) time.sleep(2) driver.find_element_by_id('s').send_keys("Selected") driver.switch_to.default_content() ########Section-3 # switch to a specific iframe (Second frame) using name as locator iframe = driver.find_element_by_name('frame2') driver.switch_to.frame(iframe) time.sleep(2) driver.find_element_by_tag_name('a').send_keys(Keys.CONTROL, 'a')
让我们逐步分析以上代码。
1)首先,必须将上面给出的HTML代码作为IFrame.HTML保存在计算机上。
2)接下来,您必须在上述代码段中提供的占位符中提供正确的路径。指定网页的文件路径时,必须使用正斜杠。否则,它可能无法正常工作。例如,在这里,我给的文件路径为。
location = "file://C:/Users/Automation-Dev/Desktop/selenium/IFrame.HTML"
3)在代码的第1节中,
seq= driver.find_elements_by_tag_name('iframe')
提供网页上存在的iframe列表。
4)我们使用以下步骤遍历此列表,从而在IFrame之间进行切换。
iframe = driver.find_elements_by_tag_name('iframe')[index] driver.switch_to.frame(iframe)
5)每当您需要从IFrame移回父HTML时。Selenium Webdriver提供以下方法。
driver.switch_to.default_content()
6)在第2节中,我们使用定位器作为“ id”切换到特定的IFrame。
iframe = driver.find_element_by_id('FR1')
7)在第3节中,我们使用定位器作为“名称”切换到特定的IFrame。
iframe = driver.find_element_by_name('frame2')
快速总结–在Iframe之间切换
了解如何使用Selenium Python在IFrame之间切换非常重要。您可以重新使用此技术来解决项目中的实时用例。