应该很简单,我有以下代码:-
DesiredCapabilities capabilities = new DesiredCapabilities();
DesiredCapabilities.internetExplorer();
capabilities.setCapability("nativeEvents",false);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),capabilities);
// And now use it
driver.get("dvfow01.mySite.com");
Thread.sleep(5000);
driver.findElement(By.linkText("Create")).click();
System.out.println("test");
driver.findElement(By.id("CreateDeal")).click();
它单击了第一个项目(“创建”的链接文本),但从未到达序列中的下一行。在我关闭浏览器的那一刻,它到达下一行,打印出文本“test”,然后显然由于关闭的窗口上没有元素而立即崩溃。
有什么建议吗?我正在运行所有最新版本...
单击此链接会通过 tagit.js 展开一个隐藏部分,因此它看起来像一个下拉菜单,但实际上不是...页面的 html 看起来像这样...
<li class="dropdown"><a href='#' class='collermenu dropdown-toggle' data-toggle='dropdown'>Create <b class='caret'></b></a>
<ul class="dropdown-menu">
<li><a id="createDeal">Deal</a></li>
<li><a id="second">someting</a></li>
<li><a id="third">something else</a></li>
<li><a id="fourth">a fourth</a></li>
<li><a id="fifth">the last</a></li>
</ul>
</li>
我已经和我的开发人员谈过了,他们告诉我他们正在运行一个名为 signalr 的东西,它带有 foreverframe 以不断地与服务器通信以获取更新/弹出窗口等?
有人听说过这个或将它与 selenium 结合使用吗?
最佳答案
It clicks the first item (linkText of "Create") but never gets to the next line in the sequence.
这通常源于应用程序问题。 WebDriver 将等待页面完全加载,我猜它永远不会完全加载。有一个应用程序问题,这可以解释为什么在您关闭它后,它会回显。
我也愿意打赌,如果您等待的时间足够长,Selenium 会吐出一个异常。
我的一个建议是首先清理您的代码..
除非您希望它是专用服务器,否则不要使用集线器。如果您在本地机器上运行测试,只需使用本地 webdriver 实例。
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability("nativeEvents",false);
WebDriver driver = new IEDriver(capabilities);
driver.get("http://myurl.com");
其次,取出,并 LEAVE out 所有显式等待,如 Thread.sleep()
. Selenium 有所谓的隐式等待。如果这些还不够,请编写自己的方法,如 waitForElement(By)
它将等待某些东西出现。
此外,它可能有助于解释单击 <a href="someurl">Create</a>
后发生的情况。
编辑
在你编辑之后,我可以给你更多的指导。如果你的场景是..
- Click the link.
- Click an item in the dropdown.
然后你可以做类似的事情-
driver.findElement(By.cssSelector("li.dropdown > a[data-toggle='dropdown']")).click();
driver.findElement(By.cssSelector("li.dropdown li > a#createDeal")).click();
由于我不喜欢做这些手动查找元素,所以我想与您分享一个很棒的项目,以帮助您开始使用 Selenium WebDriver Java。 Getting started with selenium (java) on GitHub
这是一个非常实用的项目,包括一个流畅的风格界面,让你远离所有这些driver.findElement()
的。你的测试看起来像,
@Config(url="http://mysite.com", browser=Browsers.IE)
public class MyTest extends AutomationTest {
@Test
public void test() {
// we will be at mysite.com right now.
click(By.cssSelector("li.dropdown > a[data-toggle='dropdown']")
.click(By.cssSelector("li.dropdown li > a#createDeal"))
.validatePresent(By.id("someIdThatAppearsAFterClicking"));
}
}
关于java - Selenium Webdriver click()没有做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054439/