【问题标题】:Accessing date element with Selenium使用 Selenium 访问日期元素
【发布时间】:2021-09-17 10:45:22
【问题描述】:

所以,我正在制作一个创建不和谐帐户的 Selenium 机器人。 我面临的问题是我无法访问日期(所以我无法输入我的出生日期)。 网站是这个:https://discord.com/register 我已经坚持了几个小时,但我仍然不知道如何使用 Selenium 更改出生日期。 我曾尝试在源代码中搜索月份,但我无法找到它们,这让我认为不可能访问不存在的东西。 那么有人可以帮助我吗?

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get("https://discord.com/register")
mail=driver.find_element_by_name("email")
mail.send_keys("some_email@something.com")
username=driver.find_element_by_name("username")
username.send_keys("some username")
password=driver.find_element_by_name("password")
password.send_keys("some password")

这是我目前所拥有的

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping css-selectors


    【解决方案1】:

    看看这是否有效

    driver.find_element_by_xpath("//input[@aria-label='Month']").send_keys("December")
    driver.find_element_by_xpath("//input[@aria-label='Day']").send_keys("5")
    driver.find_element_by_xpath("//input[@aria-label='Year']").send_keys("2018")
    

    【讨论】:

    • 它部分工作,它设置日期和年份,但不设置月份
    • 他(或她)也可以将我的解决方案与您的定位器结合起来。
    【解决方案2】:

    您可以执行与用户相同的操作。

    首先,使用显式等待使您的脚本稳定。 对于此导入 从 selenium.webdriver.support.ui 导入 WebDriverWait 从 selenium.webdriver.support 导入 expected_conditions 作为 EC from selenium.webdriver.common.by 导入方式

    请注意,这对于等待您的 month 输入可点击特别有用。

    第二, 使用CSS 或XPath 选择器使您的脚本稳定。在您的情况下,最好使用 css,因为对于类名,您只需在类之前放置一个 .。

    第三。 使用 Selenium 模拟按 Enter。 对于这个导入

    from selenium.webdriver.common.keys import Keys
    

    并使用.send_keys(Keys.ENTER) 应用输入

    对日期和年份使用相同的策略。

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--incognito")
    
    driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver', chrome_options=chrome_options)
    
    driver.get("https://discord.com/register")
    wait = WebDriverWait(driver, 10)
    mail = wait.until(EC.element_to_be_clickable((By.NAME, "email")))
    mail.send_keys("some_email@something.com")
    username = wait.until(EC.element_to_be_clickable((By.NAME, "username")))
    username.send_keys("some username")
    password = wait.until(EC.element_to_be_clickable((By.NAME, "password")))
    password.send_keys("some password")
    month = driver.find_element_by_css_selector(".css-1hwfws3")
    month.click()
    month_input = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".inputMonth-IGgn-0 input")))
    month_input.send_keys("December")
    month_input.send_keys(Keys.ENTER)
    

    附:还有其他方法。我的建议应该是可靠的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 2012-02-08
      • 2017-12-01
      相关资源
      最近更新 更多