2017-04-22 37 views
0

我試圖努力使自動結賬劇本,但我堅持從下拉列表中Python不能找到沒有這樣的元素

from selenium import webdriver 
import requests 

driver = webdriver.Chrome() 
driver.get('http://www.supremenewyork.com/shop/all') 
driver.find_element_by_xpath('//*[@id="container"]/article[112]/div/a').click() 
driver.find_element_by_xpath('//*[@id="size"]/option[2]').click() 

下面選擇特定大小的下拉尺寸選擇的HTML並且我正在複製xpath但仍然無法找到元素,爲什麼?

enter image description here

回答

1

看看在Select類。每當你處理SELECT元素時,你都應該使用它......它會讓你的生活變得更容易。

你的代碼看起來應該像

from selenium.webdriver.support.ui import Select 
select = Select(driver.find_element_by_id('size')) 
select.select_by_visible_text("Medium") 
+0

使用這個代碼,並拋出我selenium.common.exceptions.NoSuchElementException:消息:沒有這樣的元件:無法找到元素:{「方法」:「ID」,「選擇器」:「大小」} – Ksuby

+0

這可以通過使用WebDriverWait來解決嗎? – Ksuby

+0

如果你的元素一直存在,如果你的元素需要一些時間來加載,那麼上面的答案應該沒問題,那麼在這種情況下WebDriverWait是要走的路 要進一步,WebdriverWait恕我直言應該是推薦的方式定位元素,它添加等待和輪詢過程直到顯示的元素。 (元素) select元素= WebDriverWait –

0

因爲你不能直接使用driver.findElement下拉菜單。你應該使用Select api。 在Java中,可以使用 Select sel = new Select (driver.findElement (By.name ("size")) sel.selectByvalue or index or visible text。你可以將ur代碼折射到python ..上面是java代碼。

0

請嘗試以下代碼。

from selenium import webdriver 
from selenium.webdriver.support.select import Select 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

browser = webdriver.Chrome() 
browser.get('http://www.supremenewyork.com/shop/all') 
browser.find_element_by_xpath('//*[@id="container"]/article[12]/div/a/img').click() 
WebDriverWait(browser,10).until(EC.visibility_of_any_elements_located((By.ID,'size'))) 
select = Select(browser.find_element_by_id('size')) 
select.select_by_visible_text("Large") 
相關問題