我需要從html選項串列類中選擇一個專案,這樣我就可以進入下一個頁面。我通過撰寫這樣的代碼,成功地通過了 "不可見 "的錯誤:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome(executable_path="C:/Windows/chromedriver.exe")
driver.get("https://www.cardmarket.com/en/Magic/AdvancedSearch")
expansion_input = driver.find_element_by_name("expansionTempInput")
expansion_input.send_keys("終極大師")
這樣一來,選項串列的下降應該是可見的,而且只有1-2個屬性,但我不能選擇任何一個屬性來進行。我還試著用這段代碼做了一下:
prog = Select(driver.find_element_by_xpath('//*[@id="ExpansionSection"/span>]/div[2]/div/div[2]/ul')
prog.select_by_visible_text("終極大師")
但是Select并不被<ul>類所支持...
那么問題來了:我有沒有辦法在輸入 "expandation_input "后,遍歷所有可見的<li>,并點擊符合條件的一個(在這個例子中是字串 "Ultimate Masters")?就像 "getAtribute[0].click()
我花了幾個小時來解決這個問題,但我搜索的stackoverflow都沒有幫助我。我對html和python完全陌生,所以我很感謝你的回答。
uj5u.com熱心網友回復:
你應該在訪問 "expand_input "之前添加一個等待,然后你將能夠得到所有可見的<li>元素,如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome(executable_path="C:/Windows/chromedriver.exe")
wait = WebDriverWait(driver, 20)
driver.get("https://www.cardmarket.com/en/Magic/AdvancedSearch")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name=expansionTempInput]") ).click()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".list-container.collapse.show .option-list li"/span>))
visible_options = driver.find_elements_by_css_selector(" .list-container.collapse.show .option-list li")
for option in visible_options:
if "Ultimate Masters" in option.get_attribute("data-option-text")。
driver.execute_script("arguments[0].click();", option)
這可能會起作用,但這取決于那個具體的網頁實作的技術。那里有440個選項,可能并不是所有的選項都能通過點擊輸入元素而被加載。 所以我建議把你的輸入文本輸入到輸入元素中,然后點擊建議的選項,如下所示:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome(executable_path="C:/Windows/chromedriver.exe")
wait = WebDriverWait(driver, 20)
driver.get("https://www.cardmarket.com/en/Magic/AdvancedSearch")
expansion_input = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name=expansionTempInput]")
expansion_input.click()
expansion_input.send_keys("終極大師")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".highed")).click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/327085.html
標籤:

