首先是规范,我在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答案 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()