PythonのSeleniumで表示されているのにnot visibleな要素がクリックできない
このページの勤務地ボタンを押すとモーダルが表示されます。
モーダルの左メニューの地方をクリックするところまでは行けるのですが、例えば関西をクリック→大阪をクリックとしたい場合、大阪のチェックボックス(input要素)がnot visibleのためクリックできません。
当初はXpathでinput要素を取得していましたが、コードの方針を少し変えて、すべてのインプット要素をまず取得し、カスタム属性の値で特定のチェックボックスを見つけるようにしました。
チェックボックスは都道府県ごとにカスタム属性value
の値がことなるのでそのようにしました。
例:
北海道地方を選択している状態では、北海道のチェックボックスのvalue属性の値はP01
になっています。大阪府はP27
です。
ですが、関西ボタンをクリックしたあとでも、value属性の値がP27
になっている要素は見つからず、P01
、つまり関西ボタンをクリックする前の北海道の状態のまま変わっていないということになります。
しかし、自動操作中のブラウザ画面ではちゃんと関西の画面に遷移しています。
def condition_specification(self, start_url):
""" 条件を指定したページを表示させる """
self.browser.get(start_url)
self.browser.find_element_by_xpath("/html/body/div[1]/div[3]/div/form/div/section[1]/div/table/tbody/tr[2]/td/div[2]/div[1]/a").click()
# 地方ボタンをクリック (self.areaは地方ボタンの属性のバリューが入っている)
area_buttons = self.browser.find_elements_by_class_name("modalChoice__item")
for area_button in area_buttons:
attr = area_button.get_attribute("data-large-cd")
if attr == self.area:
area_button.click()
# 大阪府のチェックボックスをクリックする処理
checkboxes = self.browser.find_elements_by_name("srPrefectureCdList")
for checkbox in checkboxes:
attr = checkbox.get_attribute("value")
if attr == "P27": # P27は大阪府のチェックボックス要素
# 大阪府のチェックボックスがクリックできるようになるまで待つ
self.wait.until(EC.element_to_be_clickable(checkbox))
# クリック
checkbox.click()
# サブミット
# self.browser.find_element_by_xpath("/html/body/div[1]/div[9]/section/div[3]/div[2]/button").click()
大阪府のチェックボックスが見つからないということになりクリックされません。
javascriptでクリックする方法やActionChainで座標を指定してクリックする方法も試しましたがチェックボックスはチェックできませんでした。
TABボタンで要素を選択していき、SPACEキーでチェックする方法も試しましたが、SPACEキーを押すと画面のスクロールになってしまいチェックできませんでした。
なにか方法は無いものでしょうか・・・
よろしくお願いいたします。