1. 程式人生 > >selenium針對下拉選單事件的處理

selenium針對下拉選單事件的處理

很多時候我們在做自動化時,需要處理下拉選單事件。

舉個例子吧,在好搜的搜尋結果頁右上角,有這樣一個下拉選單:滑鼠移動上去之後,會顯示出baidu、bing、google的引擎切換選項。

但是當下拉選單不顯示的時候,我們用driver.find_element_by_class_name方法去獲取element,會出異常:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

意思是element是不可見的。所以無法獲取到。

所以我們需要先使得下拉選單顯示出來,讓element可見。才能去對它進行操作。

那我們就先來顯示下拉選單吧。有時候我們使用click()操作對一些按鈕進行操作的時候,是可以顯示出下拉選單的。比如那種文字帶超連結的樣子:

這種element是可以直接使用click,就能顯示出下拉選單的。

但是針對某些情況,這一招就不靈了,例如最開始咱們說的,切換引擎的下拉選單。

這個時候。使用driver.find_element(By.ID, 'g-hd-searchs').click(),是不能生效的,會出異常:

ElementNotVisibleException: Message: element not visible

異常依然是獲取不到element。

這時候,我們就用ActionChains來模擬效果

ActionChains(driver).click(driver.find_element(By.ID, 'g-hd-searchs')).perform() #使用perform()才能執行action

這個時候,你會驚奇地發現:下拉選單成功出現了。

接下來,你就可以進行你想要的操作了