1. ホーム
  2. javascript

[解決済み] PythonでSeleniumを使って人間認証「プレスアンドホールド」を回避する方法とは?

2022-02-02 05:45:32

質問

SeleniumとPythonを使って、次のような製品のレビューをスクレイピングしようとしています。 サイト が、別の サイト で、任意のタイミングでポップアップが表示され、そこで人間認証のためにボタンを長押しする必要があります。

私はクロームウェブドライバを使用しており、この問題を解決するために、パスを取得するために driver.find_element_by_xpath などなど、いろいろな方法があります。また、「長押し」ボタンがiframeの中にあることがわかったので、iframeに切り替えるには driver.switch_to_frame('//iframe') または driver.switch_to_frame(0) が、失敗しました。何かアクションを起こすためのiframe名やidが見つからないのです。

seleniumとpythonを使って、(サイトやポップアップとして)発生するたびにバイパスしたり、アクション(ボタンの長押し)を取ったり、途中で他のポップアップを解除する方法はありませんか? 何かご提案があれば、ぜひお願いします。

どのように解決するのですか?

この問題のジェイコブの解決策 こちら は、この問題を解決します。

import time
from selenium import webdriver as wd
from selenium.webdriver.common.action_chains import ActionChains

driver = wd.Chrome('./web driver/chromedriver.exe')
target_url = 'https://www.walmart.com/blocked?url=L2lwL0Nsb3JveC1EaXNpbmZlY3RpbmctV2lwZXMtMjI1LUNvdW50LVZhbHVlLVBhY2stQ3Jpc3AtTGVtb24tYW5kLUZyZXNoLVNjZW50LTMtUGFjay03NS1Db3VudC1FYWNoLzE0ODk4MzY1&uuid=9ed7f800-f288-11eb-ad50-1b3c9c7d7310&vid=9cf07351-f288-11eb-9ab5-ef26d206453b&g=b'
driver.get(target_url)
driver.maximize_window()

element = driver.find_element_by_css_selector('#px-captcha')
action = ActionChains(driver)
action.click_and_hold(element)
action.perform()
time.sleep(10)
action.release(element)
action.perform()
time.sleep(0.2)
action.release(element)