【问题标题】:Python Selenium input date in ng datepickerng datepicker中的Python Selenium输入日期
【发布时间】:2021-01-21 17:34:40
【问题描述】:

我正在尝试将日期输入到日期选择器的文本部分,但 send_keys 不起作用。

这里是html:

<date-picker _ngcontent-bdp-c11="" _nghost-bdp-c3="">
    <div _ngcontent-bdp-c3="" class="datePicker formDiv-header datePickerContainer">
        <div _ngcontent-bdp-c3="" class="formLabel-header">
            <!---->
            <label _ngcontent-bdp-c3="" for="dateInput1">Search Date:</label>
            <!---->
        </div>
        <div _ngcontent-bdp-c3="" class="formField-header" style="padding:0;">
            <div _ngcontent-bdp-c3="" class="input-group date" id="dateTimePicker1">
                <input _ngcontent-bdp-c3="" class="form-control formField-header" maxlength="10" type="text">
                <span _ngcontent-bdp-c3="" class="input-group-addon"><span _ngcontent-bdp-c3="" class="glyphicon glyphicon-calendar">
                </span>
            </span>
        </div>
    </div>
</div>
</date-picker>
<search-button _ngcontent-bdp-c11="" _nghost-bdp-c4="">
    <button _ngcontent-bdp-c4="" class="selectionButton" type="button"> Search
</button></search-button>

这是我的代码:

dateInputfield = driver.find_element_by_xpath('// *[ @ id = "dateTimePicker1"] / input')
# the dateInputfield:  <selenium.webdriver.remote.webelement.WebElement (session="6911b2bc422dac02d926b3b36429e8de", element="0.8362094047920967-3")>
dateInputfield.send_keys('01/15/2021')
searchbt = driver.find_element_by_xpath('//*[@id="filters"]/search-button/button')
searchbt.click()

或者,我尝试单击日历图标,这实际上会打开日历以供选择,但我不知道如何导航到给定日期以选择它。

calicon = driver.find_element_by_xpath('//*[@id="dateTimePicker1"]/span/span')
calicon.click()

任何帮助将不胜感激。

【问题讨论】:

    标签: python selenium-webdriver xpath datepicker css-selectors


    【解决方案1】:

    要将日期 字符发送到元素,您可以使用以下任一Locator Strategies

    • 使用css_selector

      driver.find_element(By.CSS_SELECTOR, "div.input-group.date#dateTimePicker1 > input.form-control.formField-header").send_keys('01/15/2021')
      
    • 使用xpath

      driver.find_element(By.XPATH, "//div[@class='input-group date' and @id='dateTimePicker1']/input[@class='form-control formField-header']").send_keys('01/15/2021')
      

    理想情况下,要将 date characters 发送到您需要为 WebDriverWait 诱导 element_to_be_clickable() 的元素,您可以使用以下任一 Locator Strategies

    • 使用CSS_SELECTOR:

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.input-group.date#dateTimePicker1 > input.form-control.formField-header"))).send_keys('01/15/2021')
      
    • 使用XPATH

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='input-group date' and @id='dateTimePicker1']/input[@class='form-control formField-header']"))).send_keys('01/15/2021')
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

    • 我实施了您的建议,并将 WebDriverWait 与 XPATH 定位器一起使用。我只需要在 send_keys 命令之前清除文本框。谢谢@DebanjanB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2015-07-18
    • 2016-04-02
    相关资源
    最近更新 更多