1. 程式人生 > >Python——Windows切換、frame切換

Python——Windows切換、frame切換

一、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()