目的
隨機點選【可見】的連結
我的Python程式
from selenium import webdriver
import random
browser = webdriver.Chrome('./chromedriver.exe')
e = len(browser.find_elements_by_xpath("//a[contains(@href,'https://www.')]"))
n = random.randint(0,e)
browser.find_elements_by_xpath("//a[contains(@href,'https://www.')]")[n].click()
我的n是隨機產生的,因為有些連結需要滑鼠,滑入才會顯示,有時候剛好n會取到沒顯示的超連結,就會出現下面錯誤訊息
Message: element not interactable
請問各位前輩,要如何只點擊【可見】的連結,以免報錯
正常來說,click事件是不會區分有所謂的可視不可視的運行才對。
這邊看到你的程式碼
e = len(browser.find_elements_by_xpath("//a[contains(@href,'https://www.')]"))
n = random.randint(0,e)
這樣的話,有機會會run到最後一個空的。
因為如果e會取到數量=10的話。陣列生成的索引值只會有0~9。
但你用0~10隨機。有機會取得10這個空的陣列。
正常要e值先扣掉1個。
e = len(browser.find_elements_by_xpath("//a[contains(@href,'https://www.')]"))-1
n = random.randint(0,e)
安全起見,也最後做到數量判斷。免得沒半個出現-1的值也會跑出錯誤。
請 javascript
幫你點
element = browser.find_elements_by_xpath("//a[contains(@href,'https://www.')]")[n]
browser.execute_script("arguments[0].click();", element)