用Selenium WebDriver填充日期字段



我正在尝试填写使用Selenium的注册表格,因为我开始熟悉这个库。

这是本网站的报名表格:https://www.fast2sms.com/

我正在尝试的

我从这个开始:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.fast2sms.com/")

在那里,我点击注册按钮,使用相同的css选择器将data-target属性设置为"#signupM":

driver.find_element_by_css_selector('button[data-target="#signupM"]').click()

然后我为这些字段设置了一些虚拟值:

from phone_gen import PhoneNumber
name = "John Doe"
dob = "02-01-1990"
phone_number = PhoneNumber("India").get_number().replace("+91", "")
email_address = f"{phone_number}@mailinator.com"

等待name字段,并填充它:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
name_field = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'input[name="signup_name"]')))
name_field.send_keys(name)

然后电话号码和电子邮件地址:

phone_number_field = driver.find_element_by_css_selector('input[name="signup_mobile"]')
phone_number_field.send_keys(phone_number)
email_addr_field = driver.find_element_by_css_selector('input[name="signup_email"]')
email_addr_field.send_keys(email_address)

在此之前的一切工作正常,完全符合预期,但是当我试图填写出生日期字段时,我遇到了问题:

dob_field = driver.find_element_by_css_selector('input[name="signup_dob"]')
dob_field.send_keys(dob)

我面临的问题

  1. 出生日期字段未填写。
  2. selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable抛出错误
  3. 由于没有填写出生日期,我无法提交表格。

我尝试调试的方法

  1. 重新检查CSS选择器
  2. 等待data-of-birth字段可以使用WebDriverWait进行交互
  3. 而不是填写文本,我尝试与弹出交互,显示当我点击字段(我想我必须这样做,但不知道如何。)

看似重复但并非重复的问题:

使用Python Selenium(滚动日期)选择特定日期

在日历日期选择器中使用Selenium

在python中使用selenium与弹出框交互

我明白为什么它可能不工作。该网站使用了一个名为datedropper的特殊javascript库。因此,日期的输入元素是只读格式的。

我认为你可以这样做:

js_code = "document.querySelector('input[name=signup_dob]').value =" 
driver.execute_script(js_code + your_date)

不确定js代码是否会工作。它可能需要一些编辑。

相关内容

  • 没有找到相关文章

最新更新