3

我正在测试网站“ https://www.freecrm.com/index.html ”的场景

登录凭据 [ john2013 / john2013 ]

Scenario :

1 open the site https://www.freecrm.com/index.html

2 login  with valid credentials

3 click on the "New Contacts" link

4 Add new contacts

使用 Selenium ide 我可以登录并单击“新联系人”链接,但是当我尝试使用 Webdriver [java] 做同样的事情时,我无法单击“新联系人”链接

我写的代码如下

driver.findElement(By.name("username")).clear()     
driver.findElement(By.name("username")).sendKeys("john2013");
driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("john2013");
driver.findElement(By.cssSelector("input[type=\"image\"]")).click();

上面的代码工作正常,但单击“新联系人”链接

driver.findElement(By.xpath("//div[@class='noprint']/span[@class='headertext']/a[3]/")).click();

虽然相同的 xpath 在 IDE 中工作,但无法正常工作。

我已经尝试使用预期条件选项,睡眠但没有任何效果。

任何人都可以在这方面帮助我。

4

3 回答 3

1

问题是您的页面使用了框架集。您应该告诉您的网络驱动程序在搜索您的元素时使用哪个框架。所以试试这个:

driver.findElement(By.name("username")).clear()     
driver.findElement(By.name("username")).sendKeys("john2013");
driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("john2013");
driver.findElement(By.cssSelector("input[type=\"image\"]")).click();

//switch the driver to use one of the frames on your page. Potentially wait for a bit till the page is loaded
driver.switchTo().frame("mainpanel");

driver.findElement(By.xpath("//*[text()='New Contact']")).click();
于 2013-09-22T21:10:29.427 回答
0

请将链接的 xpath 更改为

xpath=//a[contains(text(),'<whatevertext>')]

如果页面的某些部分中已经存在相同的文本链接,我们可以继续处理。例如,如果它第二次重复:

xpath=(//a[contains(text(),'<whatevertext>')])[2]

如果没有任何工作,最好的方法是通过 java 脚本执行器。

首先获取链接的webelement。

然后使用下面的代码"webelement=driver.findElement(by.xpath("=//a[contains(text(),'')]")) (JavaScriptExecutor)driver.executescript("argument[0].click( );",网页元素)

于 2013-09-23T02:01:30.990 回答
0

实际上讲 //div[@class='noprint']/span[@class='headertext']/a[3]/ 是绝对的 XPath。

因为它以 a[3] 结尾,所以位置总是会变化,因此建议使用相对 XPath/CSS

建议的 CSS:css=.noprint > .headertext > a.classname 另一个建议的 CSS:css=.noprint > .headertext > a[attribute='value']

所以我们可以使用上述任何一种格式。

于 2014-04-03T11:37:15.630 回答