前提・実現したいこと
python3、seleniumを使って、モーダルウインドウを消したいです。
こちらのURLにアクセスした時に出る、
モーダルウィンドウのボタンをクリックし、ウィンドウを消したいです。
具体的には、「本ウェブサイトはクッキーを利用します」というウィンドウで、「続行する」というボタンを押したいです。
該当のソースコード
python
1from selenium import webdriver 2from time import sleep 3 4driver = webdriver.Chrome() 5 6driver.get("https://mt4.xmtrading.com/") 7sleep(5) 8btn = driver.find_element_by_xpath('//*[@id="cookieModal"]/div/div/div[1]/div[2]/div[2]/div/button') 9btn.click() 10
試したこと
1.Xpathで要素を見つけてクリックする。
コードは上記の通りです。
→エラーはでないが、モーダルウインドウも消えない。
2.クリックする要素をbuttonからdivに変える
→エラーはでないが、モーダルウインドウも消えない。
3.iframeに移動後、要素を見つけてクリックする。
→NoSuchElementException
iframe内に書かれているわけではないので、当然ですが。。
4.ActionChainsを使って、要素へ移動した後、クリックする
python
1from selenium import webdriver 2from time import sleep 3from selenium.webdriver.common.action_chains import ActionChains 4 5driver = webdriver.Chrome() 6 7driver.get("https://mt4.xmtrading.com/") 8sleep(3) 9 10btn = driver.find_element_by_xpath('//*[@id="cookieModal"]/div/div/div[1]/div[2]/div[2]/div/button') 11actions = ActionChains(driver) 12actions.move_to_element(btn) 13actions.click() 14actions.perform()
→エラーはでないが、モーダルウインドウも消えない。
5.switch_to_alertを使う
python
1alert = driver.switch_to_alert() 2alert.accept()
→NoAlertPresentException: Message: no such alert
6.switch_to.windowを使う
python
1driver.switch_to.window(driver.window_handles[1])
→IndexError: list index out of range
新しいウィンドウが開かれているわけではない。
7.こちらのページを参考に、以下の1行を追加し、スクロールした後に要素をクリック。
python
1driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") #こちらの1行を追加 2btn = driver.find_element_by_xpath('//*[@id="cookieModal"]/div/div/div[1]/div[2]/div[2]/div/button') 3btn.click()
→エラーはでないが、モーダルウインドウも消えない。
8.クリックではなく、Escapeキーを押す
python
1from selenium.webdriver.common.keys import Keys 2 3actions = ActionChains(driver) 4actions.send_keys(Keys.ESCAPE).perform()
→エラーはでないが、モーダルウインドウも消えない。
色々試しましたが、解決方法がわかりません。
お分かりになる方がおりましたら、何卒宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/08 10:22