【问题标题】:Security Prompt Paypal安全提示 Paypal
【发布时间】:2020-04-08 18:51:20
【问题描述】:

我一直在玩弄 Python 和 Pycharm,并开始编写一个 Paypal 自动帐户脚本。现在,我遇到了一些问题,尤其是 Paypal 的安全提示站点,这显然会阻止脚本继续运行。 (确切地说:它“等待”大约 20 秒,然后中止脚本)。 我正在使用最新的 Pycharm/Python 驱动程序和 chromedriver(版本 79) 我听说过有关implicity_wait 代码的一些选项,但我就是无法让它工作......

我希望 selenium 等到我做 ReCaptcha 的事情,同时想要确认我的密码。

非常爱所有(至少尝试)提供帮助的人。谢谢

这是代码:

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


browser = webdriver.Chrome(executable_path=r"C:\Users\ASUS\Downloads\chromedriver.exe")

browser.get("https://www.paypal.com/welcome/signup?country.x=GB")
browser.implicitly_wait(30)

browser.find_element_by_id("acceptAllButton")
cookies = browser.find_element_by_id("acceptAllButton")
cookies.click()


browser.find_element_by_id("paypalAccountData_countryselector")
GB = browser.find_element_by_id("paypalAccountData_countryselector")
GB.click()

browser.find_element_by_id("paypalAccountData_firstName")
Name1 = browser.find_element_by_id("paypalAccountData_firstName")
Name1.click()
Name1.send_keys("James")

browser.find_element_by_id("paypalAccountData_lastName")
Name2 = browser.find_element_by_id("paypalAccountData_lastName")
Name2.click()
Name2.send_keys("Charles")

browser.find_element_by_id("paypalAccountData_email")
email = browser.find_element_by_id("paypalAccountData_email")
email.click()
email.send_keys("TheEmail@gmail.com")


browser.find_element_by_id("paypalAccountData_password")
Password = browser.find_element_by_id("paypalAccountData_password")
Password.click()
Password.send_keys("TheEmail12!")

browser.find_element_by_id("paypalAccountData_addressSuggest")
Adress = browser.find_element_by_id("paypalAccountData_addressSuggest")
Adress.click()
Adress.send_keys("SW1A 1BD")

browser.find_element_by_id("paypalAccountData_address2")
Adress2 = browser.find_element_by_id("paypalAccountData_address2")
Adress2.click()
Adress2.send_keys("Warwick House")

browser.find_element_by_id("paypalAccountData_address1")
ADL1 = browser.find_element_by_id("paypalAccountData_address1")
ADL1.click()
ADL1.send_keys("St. James's Palace")

browser.find_element_by_id("paypalAccountData_city")
City = browser.find_element_by_id("paypalAccountData_city")
City.click()
City.send_keys("London")

browser.find_element_by_id("paypalAccountData_phoneType")
Number = browser.find_element_by_id("paypalAccountData_phoneType")
Number.click()

browser.find_element_by_id("paypalAccountData_phone")
Number1 = browser.find_element_by_id("paypalAccountData_phone")
Number1.click()
Number1.send_keys("87536718921")

browser.find_element_by_id("paypalAccountData_dob")
DateOfBirth = browser.find_element_by_id("paypalAccountData_dob")
DateOfBirth.click()
DateOfBirth.send_keys("02041996")

browser.find_element_by_id("paypalAccountData_oneTouchCheckbox")
Checkout = browser.find_element_by_id("paypalAccountData_oneTouchCheckbox")
Checkout.click()

browser.find_element_by_id("paypalAccountData_tcpa")
Checkout2 = browser.find_element_by_id("paypalAccountData_tcpa")
Checkout2.click()

【问题讨论】:

  • 欢迎来到 StackOverflow!我看到你是一个新的贡献者,所以我建议你查看How to ask a good questionHow to create a minimal reproducible example。目前,不太清楚你的问题是什么。您是否在询问如何绕过 PayPal 的 ReCaptcha 和/或安全提示?或者您是否正在寻找如何让您的脚本等到页面达到某个状态?

标签: python selenium-webdriver pycharm selenium-chromedriver


【解决方案1】:

您可以使用时间模块。随便写:

import time
time.sleep(x)

【讨论】:

  • 是的,谢谢,但问题是如果我解决了 ReCaptcha,我会浪费大量时间等待代码继续运行
【解决方案2】:

您是否可以尝试显式等待某个元素变为可用,或者在您执行验证码后发生更改的其他条件,而不是使用隐式等待一段时间?

这里的 selenium 文档中提供了一个等待元素的示例:https://selenium-python.readthedocs.io/waits.html

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

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

【讨论】:

  • 谢谢你!只需要更改一些东西并在这里和那里指定,但代码本身对我有很大帮助。
  • @Razorbackfire 如果这解决了您的问题,请随时将其标记为答案。知道是什么对你有用,这对我和其他所有人都有帮助。
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 2012-08-31
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2021-12-16
  • 2013-09-06
相关资源
最近更新 更多