簡體   English   中英

IF CONDITION 在 Recaptcha 和另一個 Element 之間不起作用,只有 1 個有效。 Selenium python

[英]IF CONDITION doesn't work between Recaptcha and another Element, just 1 works. Selenium python

我正在嘗試使用 Recaptcha 為 Selenium Python 做 if-else 條件。

我正在檢查一個網站,有時 Recaptcha 似乎可以解決問題。

有時它不會出現,可以單擊提交按鈕。

我希望代碼切換到 Recaptcha 並解決它是否出現,如果沒有則單擊提交按鈕。

我的嘗試

search_box = driver.find_element(By.ID,"SearchCriteria")
search_box.send_keys("Test")

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name^='a-'][src^='https://www.google.com/recaptcha/api2/anchor?']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[@id='recaptcha-anchor']"))).click()
driver.switch_to.default_content()

try:
    driver.find_element(By.ID,"btnSSSubmit").click()

except:
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='recaptcha challenge expires in two minutes']")))
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#recaptcha-"))).click()

當 Recaptcha 沒有彈出時,此方法似乎不起作用我猜是因為下一部分代碼試圖解決 Recaptcha,並且由於它沒有彈出,因此會導致錯誤。

我試過的第二種方法

search_box = driver.find_element(By.ID,"SearchCriteria")
search_box.send_keys("Test")

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name^='a-'][src^='https://www.google.com/recaptcha/api2/anchor?']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[@id='recaptcha-anchor']"))).click()
driver.switch_to.default_content() 
try:
    if(len(driver.find_elements(By.XPATH, "btnSSSubmit"))) > 0 :
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,"btnSSSubmit"))).click()

        WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='recaptcha challenge expires in two minutes']")))
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#recaptcha"))).click()
except:
    pass

如果沒有出現 Recaptcha,則此方法不起作用。

如有任何幫助,我們將不勝感激。

像下面這樣嘗試一次。

由於 Recaptcha 可能會出現也可能不會出現,因此請嘗試單擊 Try 塊中的 Recaptcha。 然后單擊“提交”按鈕。

search_box = driver.find_element(By.ID,"SearchCriteria")
search_box.send_keys("Test")

try:
    # Try to solve the Recaptcha.
except:
    print("Recaptcha did not appear")

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID,"btnSSSubmit"))).click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM