selenium-webdriver - 如何在运行时单击特定图像?
问题描述
我正在填写表单,其中字段可以是复选框/单选按钮/文本框/日期选择器/时间选择器等。单击“TimePicker”时遇到问题,基本上,当我单击时,右侧会出现一个时钟图标它是一个弹出窗口,我必须从中选择时间。请参考图片。https://i.stack.imgur.com/MUOXz.jpg没有定位器可以帮助我点击“时钟”图标。这是html DOM。
<ac-input _ngcontent-brk-c387="" inputtype="time" _nghost-brk-c374="" class="visible ng-untouched ng-pristine ng-invalid ng-star-inserted" xpath="1">
<div _ngcontent-brk-c374="" class="col-sm-12 col-md ng-star-inserted">
<div _ngcontent-brk-c374="" class="form-group">
<ac-label _ngcontent-brk-c374="" _nghost-brk-c371="">
<label _ngcontent-brk-c371="" aria-hidden="true" class="ql-editor required ng-star-inserted" for="<p>
<p>
2. Time:
</p>
</label>
</ac-label>
<div _ngcontent-brk-c374="">
<input _ngcontent-brk-c374="" class="form-control ng-star-inserted" id="<p></p>" type="time">
</div>
<ac-hint _ngcontent-brk-c374="" _nghost-brk-c372="">
</ac-hint>
<ac-validation-messages _ngcontent-brk-c374="" role="alert" aria-atomic="true" _nghost-brk-c348="" style="">
</ac-validation-messages>
</div>
</div>
</ac-input>
我在应用程序的截图工具的帮助下捕获了“时钟”图标,并将其粘贴到桌面以及我的应用程序下的“屏幕截图”文件夹下。但是在运行时应用程序不会发生单击事件,而是单击桌面上的“时钟”图标。它的控制台输出是“[log] DOUBLE CLICK on L[410,442]@S(0) (69 ms)”。
这是我尝试过的...
else if(answerType.equals("Time"))
{
WebElement timeText = answers.get(ans) .findElement(By.tagName("label"));
System.out.println(timeText.getText());
Screen screen = new Screen();
Pattern image1 = new Pattern("C:\\Selenium\\workspace\\C_Care\\Screenshots\\Clock.PNG");
Pattern image2 = new Pattern("C:\\Selenium\\workspace\\C_Care\\Screenshots\\Twelve.png");
screen.wait(image1, 10);
for(int sc=0; sc<6; sc++)
{
screen.mouseMove(image1);
screen.doubleClick(image1);
break;
}
screen.wait(image2,10);
screen.click(image2);
}
我使用 TestNg 框架,并使用了 Sikuli 的 maven 依赖项是 2.0.4。
任何帮助将不胜感激。