我想知道是否有其他人遇到过这个问题。我有一个使用twitter bootstrap的网站,在我的脚本中的一个点我打开一个模态,我经历并与该模态中的几个对象(文本输入,下拉列表,复选框)进行良好的交互。但是当我最后点击提交按钮时,没有任何反应。
就硒而言,它点击了它,如果我在运行时看屏幕,可以看到按钮突出显示就像点击一样,但没有任何反应。如果我之后尝试点击它,除按钮突出显示之外仍然没有任何反应。如果我然后点击RETURN或ENTER然后它会触发......
我已经尝试过而不是点击发送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 addin中,则输出: -
driver.findElement(By.xpath("(//a[contains(text(),'Create')])[2]")).click();
答案 0 :(得分:5)
我设法找到了一个解决方案,但仅仅是纯粹的运气。基本上在我点击取消或创建链接之前,我正在与一些tagit输入进行交互,并且必须做一些小工具才能让它们工作。
这些标签位于模态中的一个div(html/body/div[3]/div[2]
)中,而链接位于另一个(html/body/div[3]/div[3]
)中,这种摆弄似乎已经阻止Selenium以某种方式看到另一个div,尽管我我不确定怎么样。
要解决这个问题,我只需点击顶层的模式(html/body/div[3]
)即可添加,然后它会发现较低级别的链接很好!如何修复它我不知道,但至少我的脚本现在再次正常工作......