[英]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.