サイトのボタンにはJavaScriptの物もあります。
こういったボタンをクリックするにはちょっと1手間必要があります。
JavaScriptのボタンを押す
find_element_by_xpathで見つけた要素を取得し、その位置を取得し中心をクリックします。
from selenium.webdriver.common.action_chains import ActionChains
でActionChainsクラスをインポートします。
dive = webdriver.Chrome() dive.get('*****') elem = dive.find_element_by_xpath('****') loc = elem.location print(loc) rec=elem.rect print(rec) x, y = loc['x']+rec['width']/2, loc['y']+rec['height']/2 actions = ActionChains(dive) actions.move_by_offset(x, y) actions.click() actions.perform() actions.reset_actions()
■操作説明
elem = dive.find_element_by_xpath(‘****’)
まず、xpathでボタンを押す要素を取得します。
loc = elem.location
でlocに[‘x’]と[‘y’]に、それぞれ要素の左上にx軸とy軸が入ります。
rec=elem.rect
rec[‘width’]とrec[‘height’]に、それぞれ要素の横幅と縦幅が入ります。
actions = ActionChains(dive)
アクションを実行させる準備します。
actions.move_by_offset(x, y)
でクリックするための座標を指定します。
actions.click()
クリックを指定します。
actions.perform()
perform()でイベントを実行させます。
actions.reset_actions()
保存されているアクションを解放します。
解放しないで再度perform()を行うとエラーが発生します。