使用Selenium在网页上查找按钮

时间:2018-01-02 13:38:35

标签: selenium selenium-chromedriver

我正在尝试自动化基于Web的应用程序,但我无法找到按钮以便点击它们。

基本上屏幕上有许多文本框,每个文本框旁边都有一个" Go"按钮。一旦你点击了#34; Go"屏幕上会显示一个弹出窗口,上面写着"你确定吗?"和2个按钮是/否。我被卡住的地方是在是/否弹出按钮上的第一组按钮之后。每个按钮都有一个非唯一的类名,没有名称变量,所以我通过tagName查找每个按钮,然后单击相关元素

WebElement aButtons = driver.findElements(By.tagName("button");
aButtons .get(x).click();

直到aButtons .get(x).click();抛出一个异常,说该元素不可点击。在进一步检查aButtons时,它的大小为78个元素,尽管页面上只有33个可见按钮。

有没有人建议如何更好地找到我的按钮?或者也许如何处理异常,以便我可以通过一些试验和错误找到元素?如果可以忽略异常,我可能会以10为增量使用for循环,以便找到Yes / No按钮对应的元素。

如果我统治这个世界,我会去这个网页的开发者并要求他们让按钮更容易识别,但不幸的是,这是不可能的

当我检查有问题的元素时,这是html中突出显示的块

"去"按钮:

<
button type "submit" ng-click="vm.click()" ng-disabled = "vm.isDisabled()" 
class = "btn btn"> Generate <button/
>
<
button class ="btn" ng-show="vm.runScripts" ng-click="vm.runScript()" ng-
disabled ="vm.runScript.isScriptRunning">
>span class = "glyphicon play" aria-hidden="true"></span>
Yes
</button>

由于我不熟悉发布html代码,因此无法解决上述格式问题.v第二个按钮是“是”按钮。

(注意&#34; No&#34;按钮具有相同的&#34; btn&#34;类名称)。当我试图找到基于类名的元素时#34; glyphicon play&#34;我收到一个错误,说复合类名称无效。我能够找到&#34; Go&#34;按钮,因为它们是顺序的,所以像aButtons .get(1).click();是页面上的第一个Go按钮,aButtons .get(2).click();是第二个等。

我无法共享该网址,因为它是一个内部网站。

0 个答案:

没有答案