我想知道是否还有其他人遇到过这个问题。我有一个利用 Twitter Bootstrap 的网站,在我的脚本中的某个时刻,我打开一个模式,我浏览该模式中的几个对象并与该模式中的几个对象(文本输入、下拉菜单、复选框)进行良好的交互。但是当我最后点击提交按钮时什么也没有发生。
就 Selenium 而言,它单击了它,如果我在运行时观察屏幕,可以看到按钮突出显示,就像单击一样,但什么也没有发生。如果我随后尝试单击它,除了按钮突出显示之外,仍然没有任何反应。如果我然后按回车键或回车键,那么它会正常启动...
我尝试过单击发送 ENTER 或 RETURN,但它们都做同样的事情并且完全不知所措,我通过 XPATH 识别对象,据我所知,它看起来是正确的......
这是代码的一部分,请记住,在此之前的所有内容都有效......
threadSesh.driver.findElement(By.xpath(".//*[@id='createDeal']").click();
threadSesh.driver.findElement(By.xpath("html/body/div[3]/div[2]/div/dl/dd[1]/input").clear();
threadSesh.driver.findElement(By.xpath("html/body/div[3]/div[2]/div/dl/dd[1]/input").sendKeys("MyNewProject");
Select myDropDown = new Select(threadSesh.driver.findElement(By.xpath("html/body/div[3]/div[2]/div/dl/dd[3]/select")));
myDropDown.selectByVisibleText("Buy Out");
threadSesh.driver.findElement(By.xpath(".//*[@id='ProjectOriginator']/li/input").click();
threadSesh.driver.findElement(By.xpath(".//*[@id='ProjectOriginator']/li/input").sendKeys("John smith");
threadSesh.driver.findElement(By.xpath("(//a[contains(text(),'Create')])[2]").click();
它的最后一行什么也没做...任何建议将非常感激!
还值得指出的是,我正在使用 ie,无法在 chrome 或 FF 中测试它(我正在测试的这个网站上不允许使用这两个版本,它是一个内部平台)。
另一个可能有用的信息,该按钮实际上不是一个按钮,而是某种使用 twitter bootstrap 东西看起来像按钮的引用,它的来源如下所示:-
<a class="btn btn-small btn-info" type="button" style="margin-right: 7px; padding-left: 15px; padding-right: 15px;" data-bind="click: ok" href="#">Create</a>
如果我将其记录在 Firefox 的 Seleneium 插件中,它会输出:-
driver.findElement(By.xpath("(//a[contains(text(),'Create')])[2]")).click();
最佳答案
我设法想出了一个解决方案,但这纯粹是运气。基本上,在单击“取消”或“创建”链接之前,我正在与一些 tagit 输入进行交互,并且必须进行一些摆弄才能让它们正常工作。
这些标记位于模式内的一个 div (html/body/div[3]/div[2]
) 中,链接位于另一个 div (html/body/div[ 3]/div[3]
),这种摆弄似乎以某种方式阻止了 Selenium 看到另一个 div,尽管我不确定是如何做到的。
为了解决这个问题,我只需在顶部添加一个模态点击 (html/body/div[3]
),然后它发现较低级别的链接很好!我不知道这是如何解决的,但至少我的脚本现在又可以正常工作了......
关于twitter-bootstrap - 在 Selenium 中单击时 Twitter Bootstrap 模式按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20330373/