iT邦幫忙

0

Python Selenium 隨機點選【可見】的連結

com 2020-04-29 16:07:224939 瀏覽
  • 分享至 

  • xImage

目的

隨機點選【可見】的連結

我的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

請問各位前輩,要如何只點擊【可見】的連結,以免報錯

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0

正常來說,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的值也會跑出錯誤。

com iT邦新手 4 級 ‧ 2020-04-29 18:02:18 檢舉

Hi~我使用Python3.7 click()如果剛好點到沒顯示,會報Message: element not interactable
我後來找到is_displayed()但是我不會帶入list中

1
listennn08
iT邦高手 5 級 ‧ 2020-04-30 08:46:46

javascript 幫你點

element = browser.find_elements_by_xpath("//a[contains(@href,'https://www.')]")[n]
browser.execute_script("arguments[0].click();", element)

我要發表回答

立即登入回答