Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中为价格删除购物车项目_Python_Selenium_Selenium Webdriver_Beautifulsoup - Fatal编程技术网

在python中为价格删除购物车项目

在python中为价格删除购物车项目,python,selenium,selenium-webdriver,beautifulsoup,Python,Selenium,Selenium Webdriver,Beautifulsoup,我试图刮购物车的项目,并得到他们各自的购物网站的价格 到目前为止,这是我的代码,但得到一个错误。我想我没有得到正确的XPath 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_elem

我试图刮购物车的项目,并得到他们各自的购物网站的价格

到目前为止,这是我的代码,但得到一个错误。我想我没有得到正确的XPath

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)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
驱动程序。通过xpath(“”/*[@id=“desktop header cnt”]/div[2]/div[2]/div/div[2]/div[2]/div[2]/div[2]/a[2]”查找元素。单击()
文件“C:\Users\aq4'july\AppData\Roaming\Python36\site packages\selenium\webdriver\remote\webelement.py”,第80行,单击
self.\u执行(命令。单击\u元素)
文件“C:\Users\aq4'july\AppData\Roaming\Python36\site packages\selenium\webdriver\remote\webelement.py”,第501行,在\u execute中
返回self.\u parent.execute(命令,参数)
文件“C:\Users\aq4'july\AppData\Roaming\Python36\site packages\selenium\webdriver\remote\webdriver.py”,第311行,在execute中
self.error\u handler.check\u响应(响应)
文件“C:\Users\aq4'july\AppData\Roaming\Python36\site packages\selenium\webdriver\remote\errorhandler.py”,第237行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.ElementNotVisibleException:消息:元素不可见
(会话信息:chrome=63.0.3239.84)
(驱动程序信息:chromedriver=2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8),平台=Windows NT 10.0.15063 x8664)
请随意使用用户名和密码(sarwarhayatt@outlook.com, sunset@paris)分别用于测试目的


注意:我使用的是python 3.6,请强调我在提问时遗漏了任何内容。

登录后,您可以直接转到购物车

driver.get('https://www.myntra.com/checkout/cart')
或者你可以点击“包”按钮

使用
Firefox()测试完整代码

编辑:有时登录有问题,但似乎
sleep()
解决了这个问题

from selenium import webdriver
import time

LOGIN = 'xxx@xxx.com' 
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')
调整大小:


滚动:

登录后,您可以直接进入购物车

driver.get('https://www.myntra.com/checkout/cart')
或者你可以点击“包”按钮

使用
Firefox()测试完整代码

编辑:有时登录有问题,但似乎
sleep()
解决了这个问题

from selenium import webdriver
import time

LOGIN = 'xxx@xxx.com' 
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')
调整大小:


滚动:

Bro如果您想登录,只需转到登录页面 做点什么。。。。 计算“双引号”和转义序列

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("sarwarhayatt@outlook.com")

driver.find_element_by_xpath("//*[@id=\"mountRoot\"]/div/div/div/form/fieldset[1]/div[2]/input").send_keys("sunset@paris")
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()

您的错误就在这里: 3双引号和“desktop header cnt”双引号在这里打破了完整的字符串
驱动程序。通过xpath(“”/*[@id=“desktop header cnt”]/div[2]/div[2]/div/div[2]/div[2]/div[2]/a[2]“”)查找元素。如果您想登录,只需转到登录页面 做点什么。。。。 计算“双引号”和转义序列

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("sarwarhayatt@outlook.com")

driver.find_element_by_xpath("//*[@id=\"mountRoot\"]/div/div/div/form/fieldset[1]/div[2]/input").send_keys("sunset@paris")
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()

您的错误就在这里: 3双引号和“desktop header cnt”双引号在这里打破了完整的字符串

driver.find_element_by_xpath(“”/*[@id=“desktop header cnt”]/div[2]/div/div[2]/div[2]/div[2]/a[2]“”

表达式看起来不错,应该与元素匹配。你犯了什么错误?您是否尝试过使用?否。请尝试进一步扩展此代码。我不知道如何列出购物车项目。通常会将完整的错误消息(回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。我在
https://www.myntra.com
但仅限于
https://www.myntra.com/checkout/cart
。也许可以创建我们可以运行的最小工作示例。@furas Done。向购物车添加了两个项目。表达式看起来不错,应该与元素匹配。你犯了什么错误?您是否尝试过使用?否。请尝试进一步扩展此代码。我不知道如何列出购物车项目。通常会将完整的错误消息(回溯)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。我在
https://www.myntra.com
但仅限于
https://www.myntra.com/checkout/cart
。也许可以创建我们可以运行的最小工作示例。@furas Done。在购物车中添加了两个项目。只是想问你..同样的代码也可以在chrome上运行吗。如果我们更改
driver=webdriver.Chrome
它也应该在Chrome上工作-我没有Selenium中的Chrome驱动程序。我安装了新的Chrome驱动程序,它可以工作(在LinuxMint上),但在我的计算机上,它会以窄窗口打开Chrome,因此
图标不可见,因此
单击
无法工作。代码应该滚动窗口或调整窗口大小。但是使用
driver.get()
我可以用Cart获取页面。你能在回答中添加调整窗口大小的代码吗?现在我正在搜索调整窗口大小的解决方案:)我只是想问你..同样的代码也可以在chrome上运行吗。如果我们更改
driver=webdriver.Chrome
它也应该在Chrome上工作-我没有Selenium中的Chrome驱动程序。我安装了新的Chrome驱动程序,它可以工作(在LinuxMint上),但在我的计算机上,它会以窄窗口打开Chrome,因此
图标不可见,因此
单击
无法工作。代码应该滚动窗口或调整窗口大小。但是使用
driver.get()
我可以用cart获取页面。你能在回答中添加调整窗口大小的代码吗?现在我正在搜索调整大小的解决方案:)非常好@zxcV32谢谢你非常好@zxcV32谢谢