正在处理的应用程序最近经过了修订,并且作为其中的一部分,引入了新的JQuery日历。我需要单击日历中的链接以选择时间和日期。但是,Selenium.click无法正常工作。命令已执行,但屏幕上没有任何反应。

要检查我的XPATH / CSS定位器(我都尝试过)是否正确,我添加了selenium.getText(locator)和selenium.highlight(locator) )命令。两者都有效!没问题。只能单击无法使用的单击。

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

我也尝试在Selenium IDE中运行相同的命令。在IDE中,此功能“有时”可用。

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

在调试过程中,我做了另一件事。在测试运行期间,我在浏览器中打开了Selenium IDE,以便它记录正在发生的操作。 IDE会记录所有操作,直到单击为止。但是执行click命令时,我在IDE中什么都看不到。任何有想法的人,这是什么原因?

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


编辑
添加了日历的屏幕截图。
日历像弹出窗口一样出现在现有窗口的顶部。





评论

您是否尝试过clickAt(0,0)函数?这在很多情况下都有帮助。

我尝试过,但想确认这是否正确。这是我尝试过的selenium.clickAt(“ locator”,“”);这是正确的吗?

不。那应该是selenium.clickAt(“ locator”,“ 0,0”);

我不建议使用clickAt,因为它高度依赖于页面上的像素级信息。

哦好的。无论如何,clickAt也不起作用。

#1 楼

尝试通过Action类单击元素。

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


如果无法通过Action类单击,则也可以尝试使用Javascript单击元素。

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


#2 楼

尽管您可能会缺少测试日历功能的信息,但如果没有任何效果(因为这不仅是单击日历链接,而且还必须导航至日历中的正确位置),并且它成为了阻止程序,请尝试直接在文本框中输入。 >

评论


猜怎么着,没有文本框:)。选择是唯一的方法。

– A.J
2011年5月27日在9:19

因此,我假设您做出选择,并且日期显示为页面上的文本标签,以任何方式可以访问您的应用程序或网上的任何类似应用程序?

–塔伦
2011年5月27日晚上11:36

应用程序当前是内部的。我可以发布一些屏幕截图。

– A.J
2011年5月27日晚上11:41

#3 楼

这是一个很长的路,但是由于该线程似乎无法正常运行……通常,当Selenium在IE中单击内容时出现问题时,这是因为缩放级别未达到100%。

#4 楼

我也无法获得click或clickAndWait来处理使用EXT.NET生成的网格中的单元。我确定定位器可以正常工作,因为在Selenium IDE中按下“查找”按钮会导致该单元格以黄色短暂突出显示。我终于尝试了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。

#5 楼

您可以尝试使用selenium.mouseDown(TargetLocator)吗?

现在TargetLocator可以直到divspan之前,或者直到span

#6 楼

如果硒中的单击命令不起作用,请按照以下步骤操作:

方法-1:
driver.findElement(By.name(“ submit”))。sendKeys(Keys.RETURN) );

方法2:
driver.findElement(By.name(“ submit”))。sendKeys(Keys.ENTER);

参考:单击硒webdriver中的命令

评论


请不要在没有署名的情况下发布引用您的文章的答案,在引用b时不要引用您的文章。有关更多信息,请参见sqa.stackexchange.com/help/promotion。

–凯特·保罗(Kate Paulk)
18/09/12在19:57