Selenium.click 不适用于某些锚元素

软件测试 自动化测试 路径 萤火虫
2022-01-15 12:34:45

正在开发的应用程序最近进行了改进,并且作为其中的一部分引入了新的 JQuery 日历。我需要单击日历中的链接来选择时间和日期。但是,Selenium.click 不起作用。该命令被执行,但屏幕上没有任何反应。

为了检查我的 XPATH/CSS 定位器(我都尝试过)是否正确,我添加了 selenium.getText(locator) 和 selenium.highlight(locator) 命令。两者都有效!没有问题。它只是不工作的点击。

在检查萤火虫时,我可以看到我试图单击的 div 处于灰色状态。这是否意味着该元素已禁用?请参阅下面的萤火虫屏幕截图。

我还尝试在 Selenium IDE 中运行相同的命令。在 IDE 中,这“有时”有效。

我正在使用 Selenium 1.xx 运行此测试。

作为调试的一部分,我又做了一件事。在测试运行期间,我在浏览器中打开了 Selenium IDE,以便它记录正在发生的操作。IDE 记录了此点击之前的所有操作。但是执行点击命令时,我在 IDE 中看不到任何内容。各位大侠,请问是什么原因?

有没有人遇到过类似的问题?任何帮助,将不胜感激!!!

编辑添加了日历的屏幕截图。日历就像现有窗口顶部的弹出窗口一样出现。 在此处输入图像描述

在此处输入图像描述

4个回答

尝试通过 Action 类单击元素。

WebElement webElement = driver.findElement(By.id("Your ID Here"));
Actions builder = new Actions(driver);
builder.moveToElement(webElement).click(webElement);
builder.perform();

如果使用动作类点击不起作用,您也可以尝试通过Javascript点击元素。

WebElement webElement = driver.findElement(By.id("Your ID here"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", webElement);

虽然您会错过测试日历功能,但如果没有任何效果(因为它不仅仅是单击日历链接,而且您还必须导航到日历中的正确位置)并且它成为一个阻止程序,然后尝试直接在文本框中输入。

这是一个有点远的镜头,但由于这个线程似乎没有去任何地方......通常,当 Selenium 在 IE 中单击事物时遇到问题,这是因为缩放级别不是 100%。

我也无法单击或 clickAndWait 来处理使用 EXT.NET 生成的网格中的单元格。我确信定位器正在工作,因为按下 Selenium IDE 中的 Find 按钮会导致单元格以黄色短暂突出显示。我终于尝试了 clickAt 并且成功了。这是我指定的:

Command: clickAt
Target: //*[@id='ext-gen336']/div[3]/table/tbody/tr/td[4]/
Value: 0,0

clickAt 的语法为clickAt(locator, coordString). coordString 的 x,y 值似乎无关紧要,所以我只使用了 0,0。