twitter-bootstrap - 在 Selenium 中单击时 Twitter Bootstrap 模式按钮不起作用

标签 twitter-bootstrap xpath selenium

我想知道是否还有其他人遇到过这个问题。我有一个利用 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/

相关文章:

selenium - 为什么我们需要 IEDriver 和 ChromeDriver 而不需要 Firefox 驱动程序?

selenium - 使用 Selenium 的 CSS 模块?

html - 使用选项卡内的列时不显示选项卡背景

html - 如何制作带有粘性表头的 Bootstrap 表?

css - 事件时 Bootstrap 背景颜色发生变化

xml - XSLT Muenchian 分组忽略特定组

ruby-on-rails - 如何根据用户正在进行的操作触发和配置 Bootstrap Tour?

xpath - EclipseLink MOXy @XmlPath 支持轴/父

c# - 使用 XPathEvaluate 获取 Linq-to-Xml 查询中的文本节点值

Selenium Webdriver cookie/使用已打开的网络浏览器