点击元素不会产生使用selenium webdriver的预期结果

时间:2012-12-21 18:21:17

标签: java junit selenium-webdriver selenium-ide

首先是规范,我在java中编写Selenium Webdriver测试,主要是在ExtJS中编写并在firefox浏览器v14上运行的应用程序。有趣的是,Selenium可以找到我想要点击的元素,但是点击似乎没有执行,或者如果它被执行了所需的结果(弹出窗口)不会发生。我还在Selenium IDE中验证了我正在寻找的元素(我通过Xpath找到的span元素),但是在Selenium IDE中我遇到了无法点击它的相同问题。

如果我手动点击按钮,会出现弹出窗口,询问我要上传的文件。我还尝试了其他元素,例如span的父'button'元素和parent'em'元素以及父'div'元素都没有运气。

让我感到害的是,我已经为这个应用程序编写了Selenium Tests数周,并且总是能够使用这种方法点击按钮,对于这个特定按钮,它不再有效。

        WebElement uploadButton = driver.findElement(By.xpath("//span[contains(text(), 'Upload Popup')]"));
    uploadButton.click();

编辑1:认为按钮本身的代码可能有帮助

<button id="filefield-1158-buttonEl-btnEl" class="x-btn-center" autocomplete="off" role="button" hidefocus="true" type="button" style="background-color: transparent;">

请注意,id是ExtJS

创建的动态ID

2 个答案:

答案 0 :(得分:1)

可能是因为很多原因。我建议您在测试运行时进行调试。

可以在Selenium Firefox实例中安装FireBug:

File file = new File("firebug-1.8.1.xpi");
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.addExtension(file);
firefoxProfile.setPreference("extensions.firebug.currentVersion", "1.8.1"); // Avoid startup screen

WebDriver driver = new FirefoxDriver(firefoxProfile);

我假设您可以通过JUnit(在像Eclipse这样的IDE中)启动测试。在调试模式下启动测试,并在单击按钮之前设置断点。然后通过FireBug检查html代码。它可能会给你一个开始。

另一个可能性是通过css类(By.className)或选择器(By.cssSelector)选择按钮:

WebElement uploadButton = driver.findElement(By.className("x-btn-center"));
uploadButton.click();

如果页面上有多个按钮,则必须使用

List<WebElement> buttons = driver.findElements(By.className("x-btn-center"));
WebElement uploadButton = buttons.get(index);
uploadButton.click();

答案 1 :(得分:0)

试试这个:

     driver.findElements(By.xpath("//button[@class='x-btn-center']").click()

     driver.findElements(By.xpath("//*[@class='x-btn-center']").click()