如何使用SeleniumWebDriver将日期发送到只读日历输入框?

2024-09-22 20:19:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想指定beg和结束日期

enter image description here

我无法更改默认日期,因为输入框是只读的。或者,我必须通过单击日历来选择日期。我不知道怎么做。是否有方法将密钥发送到只读输入框

两个输入框的来源如下:

       <div class="date-from">
                <h3>From</h3>
                <input type="text" readonly="readonly" value="Jan 11, 2020">
                <button class="icon la-Calendar"></button>
            </div>

      <div class="date-to">
                        <h3>To</h3>
                        <input type="text" readonly="readonly" value="Jan 11, 2020">
                        <button class="icon la-Calendar"></button>
                    </div>

我下面的代码得到“Message:invalid element state”错误。谢谢大家!

      browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input').clear()
      browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input').send_keys("Jan 01,2019")

[更新]快到了。使用以下代码。请求日期已成功更改。结束日期有问题。beg日期也会在“结束日期”框中结束

element = browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input')
browser.execute_script("arguments[0].removeAttribute('readonly','readonly')",element)
element.clear()
element.send_keys("Jan 01, 2019")
time.sleep(5)

element2 = browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[2]/input')
browser.execute_script("arguments[0].removeAttribute('readonly','readonly')",element2)
element2.clear()
element2.send_keys("Dec 31, 2019")

enter image description here


Tags: divbrowseridinputbybuttonelementfind
1条回答
网友
1楼 · 发布于 2024-09-22 20:19:36

您可以使用下面的行来代替send_keys在日期输入字段中写入日期。基本上我们直接改变元素的值

element= browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input')

    browser.execute_script("arguments[0].setAttribute('value', ‘“Jan 01,2019"')", element);

    OR



    browser.execute_script(“arguments[0].value=arguments[1]", element, “Jan 01,2019”)

另一种解决方案:

通过删除readonly属性,然后按如下方式发送键,将输入字段设置为可编辑

element= browser.find_element_by_xpath('//*[@id="bpcg9kk"]/div/div[3]/div[1]/div[2]/div[1]/div[2]/div[1]/input')


browser.execute_script("arguments[0].removeAttribute('readonly','readonly')",element)

element.send_keys("Jan 01,2019")

清除字段:

element2.send_keys(Keys.CONTROL + "a");
 element2.send_keys(Keys.DELETE);

相关问题 更多 >