我正在嘗試自動檢查我的土耳其公民申請的狀態。
這是我的代碼:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://vatan.nvi.gov.tr/moduller/basvuru/basvurudurumbilgi.aspx")
driver.implicitly_wait(7)
first = driver.find_element(by=By.ID , value="ctl00_content_txtBasvuruNo1")
first.send_keys("55555")
first.send_keys(Keys.RETURN)
second = driver.find_element(by=By.ID , value="ctl00_content_txtBasvuruNo2")
second.send_keys("55555")
second.send_keys(Keys.RETURN)
day = driver.find_element(by=By.ID , value="content_txtDogumTarihi_txtGun")
day.send_keys("01")
day.send_keys(Keys.RETURN)
month = driver.find_element(by=By.ID , value="content_txtDogumTarihi_txtAy")
month.send_keys("01")
month.send_keys(Keys.RETURN)
year = driver.find_element(by=By.ID , value="content_txtDogumTarihi_txtYil")
year.send_keys("1990")
year.send_keys(Keys.RETURN)
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://www.google.com/recaptcha/api2/anchor']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.recaptcha-checkbox-border"))).click()
driver.implicitly_wait(20)
driver.find_element(by=By.CLASS_NAME , value= "rtbText").click()
問題出在最后一行。輸入我的申請號(我用 55555-55555 代替)后,它沒有點擊它。當我自己運行最后一行時,它會單擊。我不知道我是不是搞砸了。
uj5u.com熱心網友回復:
單擊驗證碼復選框后,您必須切換到默認內容,使用:
driver.switch_to.default_content()
然后你需要點擊'rtbText'。
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.recaptcha-checkbox-border"))).click()
driver.switch_to.default_content()
driver.implicitly_wait(20)
driver.find_element(by=By.CLASS_NAME , value= "rtbText").click()
uj5u.com熱心網友回復:
這是因為您輸入了一個 iframe,并且在嘗試與 iframe 之外的內容進行互動之前從未離開過 iframe。
您需要在最后一行之前添加以下行:
driver.switch_to.default_content()
然后你就可以開始點擊 iframe 之外的東西了。
添加該行后,代碼的最后一部分可能如下所示:
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://www.google.com/recaptcha/api2/anchor']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.recaptcha-checkbox-border"))).click()
driver.switch_to.default_content()
driver.implicitly_wait(20)
driver.find_element(by=By.CLASS_NAME , value= "rtbText").click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/512218.html
上一篇:org.openqa.selenium.NoSuchElementException:沒有這樣的元素(按索引切換到幀)
