当前位置: 首页 > 知识库问答 >
问题:

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

陶博赡
2023-03-14

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

如果我手动单击按钮,弹出窗口将出现,询问我要上载的文件。我还尝试了其他元素,如span的父“button”元素、父“em”元素和父“div”元素,但都没有成功。

最要命的是,我已经为这个应用程序编写了几个星期的Selenium测试,并且总是能够使用这个方法来点击按钮,而对于这个特定的按钮,它不再工作。

        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个答案

印劲
2023-03-14

试试这个:

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

或者

     driver.findElements(By.xpath("//*[@class='x-btn-center']").click()
陶刚豪
2023-03-14

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

可以在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类(按.className)或选择器(按.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();
 类似资料:
  • 我正试图点击一个硒元素。它是一个复选框,包含以下HTML代码: 包含复选框和术语的段落代码: 我尝试过三种不同的方法,但都不奏效: 请帮助解决其他问题。

  • 片段着色器 结果是一个绿色屏幕,里面有一个黑色矩形。但我希望长方形改为蓝色。我的代码有问题吗?

  • 问题内容: 我想知道如何启用对伪元素的单击(我链接到下面的JSfiddle上div的橙色部分)。我读过,由于伪元素不在DOM中,因此您需要对此进行破解。不幸的是,我找不到实际显示有效代码的现有Stackoverflow问答。 HTML: CSS: 问题答案: 一种解决方法是将a动态添加到该项目并为其分配click方法。 CSS

  • 我必须在一个学校项目的“slice”对象上实现一个快速排序算法,该slice对象是一个具有: “数据”字段(要排序的整个数组) “左”和“右”字段(表示数组中切片子部分的索引) 分区函数代码如下: 该函数的doctests不会失败,但是当调用quicksort递归函数时,分区函数的行为不会像预期的那样。quicksort函数的代码如下: 编辑:正如下面的一条评论所指出的,我简直忘了更新piv的值,

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J

  • 我正试图对这个网站进行测试。(https://www.phptravels.net/),我想测试一下它的登录特性。有一个“我的帐号”链接,需要先点击,显示登录和注册按钮的下拉。HTML代码如下所示: 当我尝试单击“我的帐户”按钮时,它抛出一个错误消息,说“元素不可见”。我很困惑,因为显然这个按钮一直可见。代码如下: 我的代码有什么问题?谢谢你。