2017-03-24 9 views
-2
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
chrome_path=r"C:\Users\Priyanshu\Downloads\Compressed\chromedriver_win32\chromedriver.exe" 
driver=webdriver.Chrome(chrome_path) 
driver.get("https://www.flipkart.com/?") 
search = driver.find_element_by_name('q') 
search.send_keys("laptop") 
search.send_keys(Keys.RETURN) 
driver.find_element_by_xpath(""" //*[@id="container"]/div/div[2]/div[2]/div/div[2]/div[2]/div/section/ul/li[2]""").click() 

最後のコード行にこのような要素はありません。Pythonでセレンを使用したそのような要素例外がありません

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
chrome_path=r"C:\Users\Priyanshu\Downloads\Compressed\chromedriver_win32\chromedriver.exe" 
driver=webdriver.Chrome(chrome_path) 
driver.get("https://www.flipkart.com/search?q=laptop&otracker=start&as-show=off&as=off") 

driver.find_element_by_xpath(""" //*[@id="container"]/div/div[2]/div[2]/div/div[2]/div[2]/div/section/ul/li[2]""").click() 

私はこのように動作しています。要素がすぐに利用できない

答えて

1

wait for it to be present first:あなたは「人気」メニューヘッダに取得したいと仮定すると、こと

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


wait = WebDriverWait(driver, 10) 

search = wait.until(EC.presence_of_element_located((By.NAME, 'q'))) 
search.send_keys("laptop") 
search.send_keys(Keys.RETURN) 

element = wait.until(EC.presence_of_element_located(By.XPATH, '//*[@id="container"]/div/div[2]/div[2]/div/div[2]/div[2]/div/section/ul/li[2]')) 
element.click() 

注意、なぜXPath式を簡素化し、要素のテキストを使用しないでください。

//li[. = "Popularity"] 
関連する問題