Python——Windows切換、frame切換
阿新 • • 發佈:2019-01-29
一、Windows切換
一百度首頁的各個視窗為例:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait import time driver = webdriver.Firefox() driver.get('http://www.baidu.com') # 獲取當前的window物件 current_window = driver.current_window_handle # 獲取當前網頁編號 和 網頁標題 print(current_window,driver.title) driver.find_element_by_name('tj_trnews').click() news = WebDriverWait(driver,10).until(lambda driver : driver.find_element_by_css_selector('.hdline0.a3')) time.sleep(3) # news = driver.find_element_by_css_selector('.hdline0.a3').text # print(news) news.click() # 獲取所有的視窗 all_windows = driver.window_handles print(all_windows) for window in all_windows : if window != current_window : # switch 切換 to 到 新的window driver.switch_to.window(window) title = driver.find_element_by_tag_name('h1').text # title = driver.find_element_by_css_selector('.text_title h1').text WebDriverWait(driver,10).until(lambda driver : title.is_displayed()) print(title) # 關閉瀏覽器 driver.quit() # 關閉視窗 driver.close() # 切換到視窗下面,獲取文字 driver.switch_to.window(current_window) print(driver.find_element_by_css_selector('#footer span').text
二、frame切換
先建兩個html檔案,inframe.html和outframe.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>外層瀏覽器</h1> <iframe id="out" src="6.inframe.html" frameborder="2" width="800" height="600"></iframe> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>內建瀏覽器</h1> <iframe id="in" src="http://www.baidu.com" frameborder="1" width="600" height="400"></iframe> </body> </html>
在上邊外層瀏覽器和內建瀏覽器進行切換
from selenium import webdriver
import os
driver = webdriver.Firefox()
# 找到外層瀏覽器html檔案的路徑
driver.get('file://' + os.path.abspath('outframe.html'))
# 通過外層瀏覽器的id進行跳轉
driver.switch_to.frame(driver.find_element_by_id('out'))
# 跳轉到內層瀏覽器
driver.switch_to.frame('in')
# 在瀏覽器中搜索selenium
driver.find_element_by_id('kw').send_keys('selenium')
# 找到點選按鈕的id,進行模擬點選
driver.find_element_by_id('su').click()