首页 > 解决方案 > 如何在运行时单击特定图像?

问题描述

我正在填写表单,其中字段可以是复选框/单选按钮/文本框/日期选择器/时间选择器等。单击“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。

任何帮助将不胜感激。

标签: selenium-webdriver

解决方案


推荐阅读