ウェブブラウザの自動テストにおいて、クリックできない場所にあるエレメントはclick()できない

タイトルだけ見ると、当たり前すぎて何言ってんの感があるわけだが。

こんなWebページがあるとする・・・クリッカブルマップがあり、そのマップ上の地点をクリックすると、その地点に関するとあるデータがダウンロードできるようなWebページが。
この地点が膨大にあるので、seleniumを使って、マップ上のすべてのdivをクリックする、みたいな自動ツールを作った。
ちとイケてないが、あらすじはこんな感じだ。

from selenium import webdriver
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome(…)
driver.get(url)
for i in range(100):
    xpath = "//div[@id='hoge']/div[{0}]".format(i)
    element = driver.find_element_by_xpath(xpath)
    element.click()

そのマップのサイズがすごく大きかったりして、スクロールしないと見えない領域があると、click()してもクリックされた挙動にならない。これはよく考えれば当たり前の事なのだが、seleniumにおいては、click()できなかったからといって、例外を吐いてくれたりはせず、何事も起きないので、注意が必要である。

今回の処理においては、ダウンロード前にチェックが走り、「地点が選択されていません」のalertが出るので、alertが出たかどうかをチェックすることで回避した。