2017-12-24 54 views
0

장바구니 아이템을 긁어 내고 쇼핑 웹 사이트의 가격을 책정하려고합니다.장바구니 아이템을 파이썬으로 긁어 모으기

지금까지 이것은 내 코드이지만 오류가 발생했습니다. 나는

from selenium import webdriver 
chrome_path =r"C:\Users\aq4'july\Desktop\chromedriver.exe" 
driver = webdriver.Chrome() 
driver.get("https://www.myntra.com/") 

#User Login 
driver.find_element_by_xpath("""//*[@id="desktop-header-cnt"]/div[2]/div[2]/div/div[2]/div[2]/div[2]/a[2]""") 

내가 점점 오전 오류에 대한 각각

Traceback (most recent call last): 
    File "<pyshell#16>", line 1, in <module> 
    driver.find_element_by_xpath("""//*[@id="desktop-header-cnt"]/div[2]/div[2]/div/div[2]/div[2]/div[2]/a[2]""").click() 
    File "C:\Users\aq4'july\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click 
    self._execute(Command.CLICK_ELEMENT) 
    File "C:\Users\aq4'july\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webelement.py", line 501, in _execute 
    return self._parent.execute(command, params) 
    File "C:\Users\aq4'july\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py", line 311, in execute 
    self.error_handler.check_response(response) 
    File "C:\Users\aq4'july\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 
    (Session info: chrome=63.0.3239.84) 
    (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Windows NT 10.0.15063 x86_64) 

는 사용자 이름과 암호 ([email protected], 일몰 @ 파리)를 사용하여 주시기 바랍니다 것입니다 내가 적절한 XPath를 받고 있지 않다 생각 테스트 목적.

참고 : 파이썬 3.6을 사용 중이며 질문 할 때 나는 무엇이든 놓쳤습니다.

+0

표현식이 좋아 보이고 요소와 일치해야합니다. 어떤 오류가 발생하고 있습니까? [Explicit Wait] (http://selenium-python.readthedocs.io/waits.html#explicit-waits)로 대기를 시도 했습니까? – alecxe

+0

번호.이 코드를 더 확장 해보실 수 있습니까? 장바구니 항목을 나열하는 방법을 모르겠습니다. –

+0

항상 전체 오류 메시지 (Traceback)를 (텍스트로, 스크린 샷이 아닌) 넣으십시오. 다른 유용한 정보가 있습니다. – furas

답변

1

당신은 카트 직접

driver.get('https://www.myntra.com/checkout/cart') 

로 이동 할 수 있습니다 로그인 후 또는 당신은 "가방"버튼을 클릭 할 수 있습니다

item = driver.find_element_by_css_selector('.desktop-cart') 
item.click() 
Firefox()

편집 테스트

전체 코드 : 때때로 로그인하는 데 문제가 있지만 sleep()이이 문제를 해결합니다.

from selenium import webdriver 
import time 

LOGIN = '[email protected]' 
PASSWORD = 'PaSwOrD' 

# --- start --- 

chrome_path =r"C:\Users\aq4'july\Desktop\chromedriver.exe" 
driver = webdriver.Chrome() 

#driver = webdriver.Firefox() 

# resize window so all elements are visible 
# and the is no problem to click them 
driver.maximize_window() 
#driver.set_window_size(1920, 1080) 
#driver.execute_script("window.resizeTo(1920,1080)") # doesn't work for me 

# --- main page --- 

#driver.get("https://www.myntra.com/") 

# --- login --- 

driver.get('https://www.myntra.com/login?referer=https://www.myntra.com/') 

time.sleep(1) 

item = driver.find_element_by_css_selector('.login-user-input-email') 
item.send_keys(LOGIN) 

item = driver.find_element_by_css_selector('.login-user-input-password') 
item.send_keys(PASSWORD) 

item = driver.find_element_by_css_selector('.login-login-button') 
item.click() 

time.sleep(1) 

# --- main page --- 

#driver.get("https://www.myntra.com/") 

# --- cart --- 

item = driver.find_element_by_css_selector('.desktop-cart') 
item.click() 

# or 

#driver.get('https://www.myntra.com/checkout/cart') 

크기 조정 : How do I resize the window in Chrome and Firefox when testing with Selenium?

스크롤 : How can I scroll a web page using selenium webdriver in python?

+0

당신에게 묻고 싶습니다 .. 동일한 코드가 크롬에서도 실행될 수 있습니다. 'driver = webdriver.Chrome'을 변경하면 –

+0

도 Chrome에서 작동합니다. Chrome 용 드라이버가 Selenium에 없습니다. – furas

+0

멋진 @furas 당신은 생명의 은인입니다. –

1

브로 그냥 시퀀스

을 큰 따옴표 "를 계산 탈출 않습니다 .... 페이지의 로그인하고 물건을 할로 이동 로그인하려면

from selenium import webdriver 
import time 
chrome_path ="chromedriver.exe" 
driver = webdriver.Chrome() 
driver.get("https://www.myntra.com/login") 

time.sleep(2) 
driver.find_element_by_xpath("//*[@id=\"mountRoot\"]/div/div/div/form/fieldset[1]/div[1]/input").send_keys("[email protected]") 

driver.find_element_by_xpath("//*[@id=\"mountRoot\"]/div/div/div/form/fieldset[1]/div[2]/input").send_keys("[email protected]") 
driver.find_element_by_xpath("//*[@id=\"mountRoot\"]/div/div/div/form/fieldset[2]/button").click() 

time.sleep(2) 

driver.find_element_by_xpath("//*[@id=\"desktop-header-cnt\"]/div[2]/div[2]/a").click() 
time.sleep(2) 
print (driver.find_element_by_xpath("//*[@id=\"prod-item-1514127198\"]/div[2]/div[4]/div/div").text) 

time.sleep(10) 
driver.quit() 

여기에 오류가 있습니다. 큰 따옴표와 "desktop-header-cnt"큰 따옴표는 전체 문자열을 깨고 있습니다. driver.find_element_by_xpath (""* [@ id = "desktop-header-cnt"]/div [2]/div [2]/div/div [2]/div [2]/div [2]/a [2] "" ")

+0

Very Well @ zxcV32 감사합니다. –