ページにiframeがある場合、iframeノードの下にページ要素を直接配置することはできません。最初にiframeに切り替えてから、iframeにページ要素を配置する必要があります。iframeに切り替えると、配置できません。 iframeの外にある要素の場合は、スイッチアウトしてiframeの外に要素を配置する必要があります。
上記のさまざまな操作のカプセル化を終えると、iframeのカプセル化ははるかに簡単になります。次に、カプセル化されたメソッドとその呼び出し方法を紹介します。
メソッドのカプセル化
def switch_to_iframe(self, frame):
"""
用于切换进页面的iframe控件
:param iframe:
:return:
"""
self.driver.switch_to.frame(frame)
def switch_to_default_content(self):
"""
从iframe中切换回主页页面
:return:
"""
self.driver.switch_to.default_content()
メソッド呼び出し
def test_switch_iframe(self): # 定义测试方法
chrome_driver = webdriver.Chrome()
chrome_driver.get("https://mail.163.com")
time.sleep(10)
frame = chrome_driver.find_element_by_xpath("//*[@id='loginDiv']/iframe")
# 调用封装好的方法切换进iframe控件
Browser_Controller(chrome_driver).switch_to_iframe(frame)
time.sleep(5)
chrome_driver.find_element_by_name("email").send_keys("邮箱账号")
chrome_driver.find_element_by_name("password").send_keys("邮箱密码")
chrome_driver.find_element_by_id("dologin").click()