3 回答

TA貢獻1875條經驗 獲得超3個贊
您面臨的問題是您要訪問的表單駐留在 iFrame 中。您必須明確告訴 selenium 切換到 iFrame。你可以這樣做。
driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.alabamagis.com/Tallapoosa/')
driver.find_element_by_xpath('/html/body/center/font[2]/a').click()
time.sleep(6)
driver.find_element_by_xpath('/html/body/font/a[1]').click()
time.sleep(6)
# new code starts here
driver.switch_to.frame('searchFrame')
driver.find_element_by_name('Master__Account').send_keys('your desired input')
此外,查找所需輸入的更簡單方法是使用find_element_by_name. 如果您檢查要抓取的網站的 HTML 代碼,input field您要訪問的網站的name屬性值為Master__Account。您可以使用它來訪問輸入。

TA貢獻1862條經驗 獲得超6個贊
Account字段在 a 中,<frame>
因此您必須:
誘導WebDriverWait以等待所需的框架可用并切換到它。
誘導WebDriverWait使所需的元素可點擊。
您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
driver.get('https://www.alabamagis.com/Tallapoosa/frameset.cfm?cfid=3986761&cftoken=54089502')
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"frame[name='searchFrame']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='Master__Account']"))).send_keys("Sean Ken")
使用XPATH:
driver.get('https://www.alabamagis.com/Tallapoosa/frameset.cfm?cfid=3986761&cftoken=54089502')
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"http://frame[@name='searchFrame']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "http://input[@name='Master__Account']"))).send_keys("Sean Ken")
注意:您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
瀏覽器快照:

TA貢獻1909條經驗 獲得超7個贊
您沒有將帳號發送到文本字段,試試這個 driver.find_element_by_xpath('/html/body/form/table/tbody/tr[2]/td[2]/input').send_keys('account_no')
send_keys 用于將輸入發送到文本字段和
driver.find_element_by_xpath('/html/body/form/table/tbody/tr[11]/td/input[1]').click()
點擊搜索按鈕
添加回答
舉報