我正在嘗試讓硒執行以下操作:
- 打開一個網站
- 點擊搜索框
- 在搜索框中輸入“西雅圖”
- 從建議的結果中選擇第一個結果
我的代碼在第 2 步失敗。搜索框的類 ID 是“class = input_search ng-pristine ng-valid ng-empty ng-touched”

這是我的代碼:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
url = 'https://wego.here.com/'
driver.get(url)
driver.find_element_by_css_selector('.input_search.ng-pristine.ng-valid.ng-empty.ng-touched').click()
driver.find_element_by_css_selector('.input_search.ng-pristine.ng-valid.ng-empty.ng-touched').send_keys('Seattle')
driver.find_element_by_css_selector('.input_search.ng-pristine.ng-valid.ng-empty.ng-touched').send_keys(Keys.ENTER)
任何建議將不勝感激!
附加問題
感謝@Prophet,我能夠完成第一次自動點擊和自動填充,但是當我嘗試使用不同的搜索框執行相同的任務時,它不喜歡它。請參考我添加到現有代碼中的以下代碼:
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button.btn"))).send_keys(Keys.ENTER)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input.itinerary_item_input_0"))).click() wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input.itinerary_item_input_0"))).send_keys('芝加哥') wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input.itinerary_item_input_0"))).send_keys(Keys.ENTER)
button.btn 確實有效,但 input.itinerary_item_input_0 無效。這是源螢屏截圖:

uj5u.com熱心網友回復:
您使用了錯誤的定位器。
ng-empty并且ng-touched可能不會一直都在。
所以代替
driver.find_element_by_css_selector('.input_search.ng-pristine.ng-valid.ng-empty.ng-touched').click()
嘗試使用這個:
driver.find_element_by_css_selector('input.input_search').click()
input.input_search是該元素的唯一、穩定的定位器。
此外,您必須添加延遲,最好使用預期條件,如下所示:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 20)
url = 'https://wego.here.com/'
driver.get(url)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input.input_search"))).click()
uj5u.com熱心網友回復:
wait=WebDriverWait(driver, 60)
driver.get('https://wego.here.com/')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.input_search"))).send_keys("Seattle")
wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@class='dropdown_list']/div[1]"))).click()
這將在將字串發送到輸入標簽后選擇第一個選項。
進口:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377641.html
標籤:硒
上一篇:java.lang.NoClassDefFoundError:io/cucumber/core/runtime/TypeRegistryConfigurerSupplier
