Selenium對於下拉式選單的處理方式
這篇文章主要說明針對一些動態的 menu,例如下拉式選單,
要如何處理才不會遇到 Element Not Found 的錯誤。
情境
假設有一個下拉式選單如下
Parent Menu-1+—–ChildMenu-1 | Parent Menu2+—–ChildMenu-2 | Parent Menu3+—–ChildMenu-3 |
這個 menu 通常需要滑鼠 move over 到 Menu-1的時候, ChildMenu-1才會出現,
因此 Selenium要如何可以正確的點選到 ChildMenu-1呢?
程式範例
# 利用 ActionChains 其中一個重要的功能,就是 move to element
actions = ActionChains(driver) #首先先 move 到該 parent Menu actions.move_to_element(ParentMenu-1) # 執行 actions.perform() # 由於 child Menu 出現需要一些時間,因此利用 Expected Conditions 等待到 childMenu的出現 ChildMenu-1 = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, ChildMenu-1)))
# child Menu出現之後再進行點擊
ChildMenu-1.click()