如何转发到另一个子包

2024-09-10 15:16:16 发布

您现在位置:Python中文网/ 问答频道 /正文

今天我用Python开始了我的第一个Selenium项目。 我要写一个程序,可以自动在网上购买商品 网站。我将在将来的更新中扩展这个机器人的功能,但现在我需要做的第一件事。你知道吗

程序现在应该做什么:

  1. 程序必须登录到站点
  2. 程序必须转发到子网站-这是一个问题。我正在从网站注销,下一步当然行不通。你知道吗
  3. 程序必须选择大小,然后单击“添加到购物车”

如果我不使用转发,但单击站点的下一部分,程序就可以正常工作。这意味着,如果我想从主页转到产品页,它不起作用-我会注销。例如,当我单击home->;shoes->;shoe的名称时,一切正常。你知道吗

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import time

browser = webdriver.Chrome(executable_path=r'C:\Users\damia\Desktop\chromedriver.exe')

stronaLog="https://www.zalando-lounge.pl/#/login"
stronaKup="https://www.zalando-lounge.pl/campaigns/ZZO0TCY/categories/5999626/articles/AD115O085-A12"

#getting to the site
browser.get(stronaLog)

#logging
email = browser.find_element_by_id('form-email').send_keys('myemail')
password = browser.find_element_by_id('form-password').send_keys('mypass' + Keys.ENTER)
time.sleep(1)

#save cookies
cookie={'name': 'MojCiasteczek', 'value':'666666'}
browser.add_cookie(cookie)

#forwading to next site and buying product
browser.get(stronaKup)
browser.find_element_by_xpath("//*[contains(text(), '41 1/3')]").click()
browser.find_element_by_css_selector('#addToCartButton > div.articleButton___add-to-cart___1Nngf.core___flipper___3yDf4').click()

Tags: tofromimportgt程序browserby站点
1条回答
网友
1楼 · 发布于 2024-09-10 15:16:16

在您尝试导航到需要用户登录的url时,身份验证过程似乎尚未完成。你知道吗

正如在评论中所讨论的,为了测试这个理论,添加了一个sleep来等待身份验证完成,这似乎是可行的。你知道吗

与使用sleep相比,更健壮的方法是等待某个元素出现在登录页上。我将给出一般示例的步骤:

  1. 以下是您需要的import语句:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
  1. 在登录后确定登录页上的某些元素。。。比如欢迎短信,或者其他不在登录页面上的东西。对于这个例子,假设您标识的元素有一个id="Welcome",当然您的元素会有所不同。

  2. 使用以下代码等待该元素:

WebDriverWait(browser,5).until(
         EC.presence_of_element_located((By.ID, "Welcome")))

此代码将最多等待5秒钟,以便该元素出现,但一旦找到它就会返回。将秒数更改为等待登录所需的最长时间。你知道吗

之后,您应该能够以经过身份验证的用户身份导航到其他url:

browser.get(stronaKup)

相关问题 更多 >