我正在测试类似于Google搜索的页面,您可以在提供的文本框中输入搜索字词,然后单击“搜索”,下一页将返回一组与搜索字词匹配的结果。这些结果都是文档(doc文件)的链接,并且是随机的,具体取决于您搜索的文本。点击第一个结果链接时遇到问题。我使用selenium IDE记录步骤,但是当我运行测试时,它在必须单击第一个结果链接时失败。我得到的错误是:
Selenium.SeleniumException: ERROR: Command execution failure. Please search the forum at http://clearspace.openqa.org for error details from the log window. The error message is: Permission denied
我尝试过这两种方式:
selenium.Click("xpath=//html/body/form/div[2]/div[3]/div[3]/table/tbody/tr/td[2]/span/a/");
selenium.Click("xpath=//span[contains(@class,'ResultList_Title_Link')][1]/a");
当我右键单击第一个结果链接并执行检查元素时,我看到:
<w_lit_documenttitle wid="82e0-9888a350e66b">MEMORANDUM OF <span style="background-color:#FFFF66;color:#333333;font-weight:bold" name="wlCitedDoc" id="wlCitedDoc">LAW</span> COMPLAINT</w_lit_documenttitle>
以上的Xpath是:
/html/body/form/div[2]/div[3]/div[3]/table/tbody/tr/td[2]/span/a/w_lit_documenttitle
答案 0 :(得分:1)
您可以通过ID或another locator找到链接,而不是在Click方法中传入xpath定位器吗?如果你以后必须改变它,那将会复杂得多,而且更具可读性。
答案 1 :(得分:1)
我相信你必须以动态的方式做到这一点,因为你说点击FIRST LINK。
结果页面加载了所有结果后作为链接, //如果为每个要点击的链接定义了id
String [] links = selenium.getAllLinks();
for(String link:links)
selenium.click(联系);
//如果没有定义id
selenium.getEval( “window.document.getElementsByTagName( 'A')[0]。点击()”); //这是点击第一个链接
我希望这就是你要找的东西
答案 2 :(得分:0)
同意@Ken Pespisa。 我偏爱使用CSS作为标识符。为搜索返回的3-4个链接提取HTML(使用Firebug),然后识别一些常用属性。然后,您可以使用该属性构造CSS标识符。如果您只需单击第一个链接,通用属性就可以。对于特定链接,您必须首先断言它的存在,然后单击它。
以下是使用示例HTML的CSS标识符示例:
selenium.click("css=span#wlCitedDoc[name=wlCitedDoc]");
答案 3 :(得分:0)
由于错误消息是“权限被拒绝”,您应该尝试找出哪个元素确实定义了您的链接。使用Selenium的点击方法,您可以点击可点击的内容,例如&lt; a&gt;元素和按钮,但您必须指定它们而不是元素中的某些文本部分。