如何使用 Selenium 和 Python 在信用卡号字段中输入日期?

How to enter date in the credit card number field using Selenium and Python?

我正在尝试制作一个脚本以在 Shopify 网站上自动结帐。当我尝试填写要求提供信用卡的字段时,selenium 不允许我将密钥发送到该字段,并表示该元素不可交互。我已经尝试点击它,但它仍然不让我输入信息。有人知道怎么办吗?

driver.find_element_by_xpath('//div[@data-card-field-placeholder="Card number"]').click()
driver.find_element_by_xpath('//div[@data-card-field-placeholder="Card number"]').send_keys("1234")

URL: https://feature.com/4089909/checkouts/2f7c52e34622f0f301c0d4b5720ad80e?previous_step=shipping_method&step=payment_method

是 link 我正在尝试在

上进行测试

您应该使用带有输入标签或任何可交互标签的元素来使用 sendKeys

查看父 div 元素是否有子 input 标签元素并找到该元素而不是 div

里面还有iframe,所以如果输入标签是inisde iframe,那么先找到iframe元素再使用

driver.switch_To.frame(iframe)

然后找到输入元素

每个 iframe 都是独立的会话,你不能从一个框架与其他框架对话,所以如果你想访问一个框架内的元素,你必须切换到那个 framefirst

完成后使用 driver.switch_to.default_content()

切换回主框架

要访问提供信用卡详细信息的页面,我们需要超越 CONTACT INFORMATION 信息页面。因此,无法直接访问它。

理想情况下 信用卡号 字段位于 <iframe> 中。因此,要访问 <iframe> 中的 Creditcard Number 字段,您必须:

  • 诱导 WebDriverWait 所需的 帧可用并切换到它

  • 诱导 所需的 元素可点击

  • 您可以使用以下任一项 :

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe_css")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[data-card-field-placeholder='Card number']"))).send_keys("1234")
    
  • 使用XPATH:

    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"iframe_xpath")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@data-card-field-placeholder='Card number']"))).send_keys("1234")
    
  • 注意:您必须添加以下导入:

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

参考

您可以在以下位置找到一些相关讨论:

  • Switch to an iframe through Selenium and python

tl;博士

您可以在以下位置找到一些相关的详细讨论: