我正在测试网站“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();
虽然在IDE中使用相同的xpath,但仍无效。
我尝试了预期的条件选项,睡觉但没有任何工作。
任何人都可以帮助我。
答案 0 :(得分:1)
问题是您的网页使用了框架集。您应该告诉您的webdriver在搜索您的元素时使用哪个框架。所以试试这个:
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();
答案 1 :(得分:0)
请将链接的xpath更改为
xpath=//a[contains(text(),'<whatevertext>')]
如果在页面的某个部分已经存在相同的文本链接,我们可以继续出现。如果它是第二次重复的示例:
xpath=(//a[contains(text(),'<whatevertext>')])[2]
如果Nothing正在运行,最好的方法是通过java脚本执行器。
首先获取链接的元素。
然后使用以下代码“ webelement = driver.findElement(by.xpath(“= //一个[含有(文本(), '')] “)) (JavaScriptExecutor)driver.executescript( “参数[0]。点击();”,webelement)
答案 2 :(得分:0)
实际说说// div [@class =&#39; noprint&#39;] / span [@class =&#39; headertext&#39;] / a [3] /是绝对XPath。
因为它以[3]结尾,所以位置总是不同所以建议使用相对的XPath / CSS
建议的CSS:css = .noprint&gt; .headertext&gt; a.classname 另一个建议的CSS:css = .noprint&gt; .headertext&gt;一个[属性=&#39;值&#39;]
所以我们可以使用上述任何一种格式。