若有任何學習問題,能夠添加做者微信:lockingfreecss
一個框架就是一個獨立的網頁
frameset: 框架組,用來佈局框架
frame: 具體的一個框架,通常放在frameset中
iframe: 內聯框架, 能夠嵌入到其餘網頁的body中python
switch_to.frame() # 只用切 iframe/frame 不用切framesetweb
switch_to.parent_frame() # 跳到上級 多層框架推薦使用
switch_to.defaut_content() # 跳出全部 一層框架推薦使用 也能夠用switch_to.parent_frame()跳出框架微信
from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.maximize_window() driver.get("http://115.28.108.130/control.html") # iframe: 內聯框架, 能夠嵌入到其餘網頁的正文中, # frameset: 框架組,用來佈局,能夠嵌套,不能嵌入到body中, # frame,框架,須要放到frameset中 # 只用切iframe及frame, frameset是用來佈局的,不用切 driver.switch_to.frame("parent_frame") driver.switch_to.frame("left") driver.find_element_by_link_text("連接1").click() driver.switch_to.parent_frame() # 這裏不用swith_to.default_content(),否則還要再切到parent_frame driver.switch_to.frame("main") print(driver.find_element_by_tag_name("h2").text) # print(driver.find_element_by_xpath("/html/body/h2").text) sleep(5) driver.quit()
打開 http://115.28.108.130/control.html,點擊連接1,輸出右側文本內容網絡
也能夠經過F12複製(不推薦:有可能有問題)框架
css選擇器, 比xpath快
find_element_by_css_selector("#firstdiv")佈局
*
能夠標識任意標籤from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.maximize_window() driver.get("http://115.28.108.130/control.html") div = driver.find_element_by_css_selector("#firstdiv>form>div:nth-child(2)") print(div.text) table = driver.find_element_by_css_selector("#firstdiv>form>div+table") print(table.tag_name)
打開 http://115.28.108.130/control.html#學習
all = driver.window_handles # 全部窗口句柄 old = driver.current_window_handle # 當前窗口出版 for h in all: # h 是當前從all中取出來的句柄 if h != old: # 若是取出來的不等於老窗口 driver.switch_to.window(h) # 切換到新窗口
all = driver.window_handles for h in all: driver.switch_to.window(h) if "騰訊課堂" in driver.title: break # 跳出循環
from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.maximize_window() driver.get("http://115.28.108.130/control.html") # 1. 切到新頁面(只打開了兩個頁面) driver.find_element_by_partial_link_text("在新頁面").click() print(driver.title) # 還在原頁面 all = driver.window_handles old = driver.current_window_handle for h in all: if h!=old: driver.switch_to.window(h) print(driver.title) # 切換到了新頁面 driver.find_element_by_id("kw").send_keys("龍騰育才") driver.find_element_by_id("su").click() sleep(1) driver.find_element_by_partial_link_text("騰訊課堂").click() # 又打開了新頁面 # 2. 多窗口切換, 根據網頁標題切換 print(driver.title) # 還在百度搜索頁上 all = driver.window_handles for h in all: driver.switch_to.window(h) if "騰訊課堂" in driver.title: break else: print("沒有找到相應的頁面") print(driver.title) sleep(5) driver.quit()
打開百度 http://www.baidu.com
搜索趕集網
切換到趕集網,並打印標題測試
此爲北京龍騰育才 Python高級自動化(Selenium部分)授課筆記
課程介紹
想要參加現場(北京)/網絡課程的能夠聯繫做者微信:lockingfree
- 高效學習,快速掌握Python自動化全部領域技能
- 同步快速解決各類問題
- 配套實戰項目練習