1. 程式人生 > >Selenium入門7 跳入/跳出frame

Selenium入門7 跳入/跳出frame

初始 一個 元素 charset 文件夾 wait baidu 百度搜索 試用

如果網頁內嵌iframe,那麽iframe裏的元素是無法直接定位的,需要使用switch_to_frame進入frame操作; 之後需要再操作頁面上非嵌入在iframe裏的元素,需要使用switch_to_default_content跳回初始頁面。

首先在腳本的文件夾裏新建一個test3.html文件,將以下內容拷貝進去保存,作為測試用的頁面。保存好了用瀏覽器打開看一下。也可找網上嵌入iframe的頁面。自己寫可以節約找網頁的時間。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset
="UTF-8"> <title>iframe</title> </head> <body> <h1>下面是一個frame</h1> <iframe id="iframe1" src="http://www.baidu.com" width="100%"" height="300px"></iframe> <a id="bing" href="http://www.bing.com">bing搜索</a> </body> </html>

上面的頁面內嵌的百度首頁。因為使用了iframe,所以定位百度搜索框報錯。

技術分享圖片

正確的腳本如下:

#coding=utf-8
#跳入跳出框架switch to frame;switch_to_default_content

from selenium import webdriver
import time
import os

#打開網頁
filepath="file:///"+os.path.abspath("test3.html")
dr=webdriver.Firefox()
dr.get(filepath)
#跳入iframe操作
dr.implicitly_wait(60)#等待iframe加載
iframe=dr.find_element_by_id("
iframe1") dr.switch_to_frame(iframe) dr.find_element_by_id("kw").send_keys("測試") dr.find_element_by_id("su").click() time.sleep(2) #跳出ifame dr.switch_to_default_content() dr.find_element_by_id("bing").click() time.sleep(2) dr.quit()

Selenium入門7 跳入/跳出frame