Selenium 自動化補充知識,Frame操作、多視窗切換、模糊定位、複合定位

ckxllf發表於2021-03-10

  Frame 操作,多視窗切換,元素模糊定位,複合定位,本篇部落格為你繼續補充一下 Selenium 的其它知識。

  Frame 操作

  Frame 是網頁中一類標籤的稱呼,翻譯過來就是網頁中巢狀一個子網頁。具體有 Frameset、Frame、iFrame 三種,其中 Frameset 與正常獲取標籤一致,但是 Frame 與 iFrame 不同,需要把 Webdriver 切換到 Frame 內在進行獲取操作。

  目前主流的網站透過 Frame 巢狀的不多了,所以本部分只羅列知識點。

  一般在使用網頁巢狀的時候 Frame 都會存在一個 id 屬性,因為沒有這個屬性無法定為到巢狀的子網頁。

  有 id 屬性就可以透過下述程式碼進行切換了。

  # 驅動切換到 iFrame

  driver.switch_to.frame("other_frame_id")

  如果想要將驅動返回到主網頁,程式碼如下。

  driver.switch_to.default_content()

  還可以透過索引進行切換。

  driver.switch_to.frame(0)

  多視窗(選項卡)切換

  網頁瀏覽的過程中,有時候開啟的新頁面在新視窗或者瀏覽器的新選項卡中,此時就需要 Selenium 進行切換了,專業術語叫做切換控制程式碼。

  例如我們點開首頁,然後點選 Python 分類,會自動在新選項卡開啟頁面,程式碼如下。

  from selenium import webdriver

  import time

  driver = webdriver.Firefox()

  driver.maximize_window()

  driver.get

  driver.find_element_by_link_text('Python').click()

  # 獲取當前瀏覽器視窗控制程式碼

  current_handle = driver.current_window_handle

  # 獲取所有視窗控制程式碼

  handles = driver.window_handles

  # print(handles) 大連人流醫院

  # 透過下述程式碼切換視窗

  driver.switch_to_window(handles[1])

  time.sleep(3)

  # 下面的 link_text 內容你需要更換到你自己瀏覽器開啟 Python 之後看到的頁面中,涉及的內容。

  driver.find_element_by_link_text('Lombok外掛到底要不要用?').click()

  # driver.quit()

  你可以將上述程式碼中的 driver.switch_to_window(handles[1]) 註釋掉,然後檢視結果。

  元素模糊定位

  只要在程式設計裡面看到模糊兩個字,你就可以聯想是部分匹配,也就是透過一些內容去查詢網頁元素。

  該部分內容,其實主要是 find_element_by_xpath 方法中 XPath 語法的應用。

  具體內容可以檢索 XPath 中 starts-with、ends-with、contains等相關知識。

  複合定位

  定位一組元素,此類方法非常容易掌握,如果你的程式設計工具中安裝了智慧提示,在你編寫程式碼的過程中會出現提示。

  一堆 find_elements_xx 的方法,這些就是複合定位啦,一次性會獲取多個標籤,返回一個標籤列表,具體內容自己嘗試一下吧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2762218/,如需轉載,請註明出處,否則將追究法律責任。

相關文章