使用 Selenium/Java 在输入中调出日历选择器<type=date>

问题描述 投票:0回答:1
我必须使用 Java 和 Selenium 测试这个日期选择器。看图片。非黄色突出显示的部分是您放置日期文本的位置,黄色部分,当您单击它时,会弹出一个日期选择器。

我的问题是整个字段只是一个输入,并且是 div 内的唯一一行:

<div class="term_dateWidth__hL6-b" style="visibility: visible;"> <input type="date" id="start" min="1900-01-01" max="9999-12-30" value=""> </div>
我可以找到该元素,但当我单击它时,它仅突出显示文本框,而不会弹出选择器。如果我用鼠标手动单击突出显示的部分,它将显示出来。我只是不知道如何用 Selenium 做到这一点。我什至尝试了父div,但那不起作用。

我虽然也许通过动作我可以达到某个点,但这似乎也不起作用,尽管也许我不理解正确使用尺寸。元素

termDateArrow 已设置为下面的输入。

public void clickTermDateArrow() { Dimension size = termDateArrow.getSize(); int height = size.getHeight(); int width = size.getWidth(); Point point = termDateArrow.getLocation(); int x = point.getX(); int y = point.getY(); Actions action = new Actions(driver); action.moveToElement(termDateArrow, width - 1, y + 10).build().perform(); }
但这也行不通。我正在尝试单击距左上角点的偏移量( getLocation() 有效。是的,我知道我可以将文本发送到框中,但这不会测试选择器。

有什么建议吗?看图

java selenium-webdriver datepicker action
1个回答
0
投票
我最终这样做了

Dimension size = termDateArrow.getSize(); int width = size.getWidth(); Actions action = new Actions(driver); action.moveToElement(termDateArrow, (width / 2) - 5, 0).build().perform(); action.click().build().perform(); TestUtils.sleep(5000);
出于某种原因,我点击了两次。不幸的是,它似乎是一个 Windows 日历选择器,因此 Selenium 找不到它。我只需按 ENTER 并验证日期是当前日期

© www.soinside.com 2019 - 2024. All rights reserved.