selenium:点击结果页面的第一个链接

时间:2011-05-23 17:59:43

标签: c# selenium selenium-rc selenium-ide

我正在测试类似于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

4 个答案:

答案 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;元素和按钮,但您必须指定它们而不是元素中的某些文本部分。