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

本文关键字:第一个 链接 结果 selenium | 更新日期: 2023-09-27 17:57:32

我正在测试一个类似于谷歌搜索的页面,您可以在提供的文本框中输入搜索词,然后单击"搜索",下一个页面将返回一组与您的搜索词匹配的结果。这些结果都是指向文档(文档文件)的链接,并且是随机的,具体取决于您搜索的文本。我在点击第一个结果链接时遇到问题。我使用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

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

我相信你必须以动态的方式来完成这项工作,就像你所说的点击第一链接一样。

在结果页面加载了作为链接的所有结果之后,//如果为每个链接定义了id,您将要单击

String[]链接=selenium.getAllLinks();

对于(字符串链接:链接)

selenium.click(链接);

//如果没有定义id的

selenium.getEval("window.deocument.getElementsByTagName('a')[0].click()")//这是点击的第一个链接

我希望这就是你想要的

您是否可以通过id或其他定位器找到链接,而不是在Click方法中传递xpath定位器?如果你以后必须修改它,它会变得不那么复杂,可读性也会更强。

同意@Ken Pespisa的意见。我偏爱使用CSS作为标识符。提取搜索返回的3-4个链接的HTML(使用Firebug),然后识别一些常见属性。然后可以使用该属性构造CSS标识符。如果你需要简单地点击第一个链接,一个通用属性就可以了。对于一个特定的链接,你必须首先断言它的存在,然后点击它。

下面是一个使用示例HTML:的CSS标识符示例

selenium.click("css=span#wlCitedDoc[name=wlCitedDoc]");

由于错误消息是"permission denied",您可能应该尝试找出哪个元素真正定义了您的链接。使用Selenium的点击方法,您可以点击诸如<a>元素和按钮,但必须指定它们,而不是元素中的某些文本部分。