使用C#的Selenium Webdriver:如何从网页上的URL数量中查找URL并单击它?

时间:2016-01-28 05:43:30

标签: c# selenium xpath selenium-webdriver

我正在selenium websdriver中编写一个C#脚本来测试一个网站并陷入其间。我在网页上有多个网址,我需要找到一个网址并在其上应用点击事件。 URL名称是动态的,因此我很难使用“ID”或“名称”找到它。 URL名称可以是任何内容,例如:the_rise_of_India.htm或the_rise_india.htm或the_riseIndia.htm等...如何过滤和查找我想要的URL并单击它?

请帮我解决上述情况。

我的HTML代码是:

<table xmlns:downloader="http://schemas.niku.com/java/com.niku.dms.web.ZipPageDownloader" border="0" cellspacing="1" cellpadding="2" class="tableGridList" width="100%">
<tbody>
<tr class="TableGridList"><td class="ColHeadNoSort" scope="col"><a href="javascript:checkAllOver('dms.fileManager');"><img src="ui/evolution1/images/IcoCheckAll.gif" border="0" alt="Check All" title="Check All"></a></td><td class="ColHeadNoSort" colspan="3" align="center" scope="col">Name</td><td class="ColHeadNoSort" align="center" scope="col">&nbsp;</td><td class="ColHeadNoSort" scope="col">Size</td><td class="ColHeadNoSort" scope="col">Type</td><td class="ColHeadNoSort" scope="col">Status</td><td class="ColHeadNoSort" scope="col">Modified</td><td class="ColHeadNoSort" scope="col">Actions</td></tr>
                <tr valign="top" class="rowOff" onmouseover="this.className='rowOn'" onmouseout="this.className='rowOff'"><td valign="middle" align="center" width="20" scope="row">&nbsp;</td><td valign="middle" width="20" class="hierTee"><img src="ui/evolution1/images/Spacer.gif" height="16" width="16" border="0" alt=""></td><td valign="middle"><img src="ui/evolution1/images/fmFolderClosed.gif" alt="" title=""></td><td valign="middle" width="100%"><a class="tableLink" target="" href="app?action=dms.ProjectsfileManager&amp;folderId=5697033&amp;returnAction=dms.ProjectsFileManager&amp;cancelAction=dms.ProjectsFileManager&amp;actionItemId=&amp;id=5103184&amp;type=Projects&amp;taskID=&amp;fromPage=&amp;rootFolderId=&amp;">Great India's place</a></td><td valign="middle" align="left" nowrap="true" id="PPP"></td><td valign="middle" align="left" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="center" nowrap="true">9/26/15 8:27 PM</td><td valign="middle" align="right"><select name="folder5697033" onchange="optionGoTo( this.form.name,'folder5697033')" class="docMgrAction"><option value=""></option></select></td></tr>
                <tr valign="top" class="rowOff" onmouseover="this.className='rowOn'" onmouseout="this.className='rowOff'"><td valign="middle" align="center" width="20" scope="row">&nbsp;</td><td valign="middle" width="20" class="hierTee"><img src="ui/evolution1/images/Spacer.gif" height="16" width="16" border="0" alt=""></td><td valign="middle"><img src="ui/evolution1/images/fmFolderClosed.gif" alt="" title=""></td><td valign="middle" width="100%"><a class="tableLink" target="" href="app?action=dms.ProjectsfileManager&amp;folderId=5687045&amp;returnAction=dms.ProjectsFileManager&amp;cancelAction=dms.ProjectsFileManager&amp;actionItemId=&amp;id=5103184&amp;type=Projects&amp;taskID=&amp;fromPage=&amp;rootFolderId=&amp;">India's silver gold awards</a></td><td valign="middle" align="left" nowrap="true" id="PPP"></td><td valign="middle" align="left" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="center" nowrap="true">8/6/15 12:04 PM</td><td valign="middle" align="right"><select name="folder5687045" onchange="optionGoTo( this.form.name,'folder5687045')" class="docMgrAction"><option value=""></option></select></td></tr>
                <tr valign="top" class="rowOff" onmouseover="this.className='rowOn'" onmouseout="this.className='rowOff'"><td valign="middle" align="center" width="20" scope="row">&nbsp;</td><td valign="middle" width="20" class="hierTee"><img src="ui/evolution1/images/Spacer.gif" height="16" width="16" border="0" alt=""></td><td valign="middle"><img src="ui/evolution1/images/fmFolderClosed.gif" alt="" title=""></td><td valign="middle" width="100%"><a class="tableLink" target="" href="app?action=dms.ProjectsfileManager&amp;folderId=5693965&amp;returnAction=dms.ProjectsFileManager&amp;cancelAction=dms.ProjectsFileManager&amp;actionItemId=&amp;id=5103184&amp;type=Projects&amp;taskID=&amp;fromPage=&amp;rootFolderId=&amp;">India's Gold awards</a></td><td valign="middle" align="left" nowrap="true" id="PPP"></td><td valign="middle" align="left" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="center" nowrap="true">9/8/15 10:02 AM</td><td valign="middle" align="right"><select name="folder5693965" onchange="optionGoTo( this.form.name,'folder5693965')" class="docMgrAction"><option value=""></option></select></td></tr>
                <tr valign="top" class="rowOff" onmouseover="this.className='rowOn'" onmouseout="this.className='rowOff'"><td valign="middle" align="center" width="20" scope="row">&nbsp;</td><td valign="middle" width="20" class="hierTee"><img src="ui/evolution1/images/Spacer.gif" height="16" width="16" border="0" alt=""></td><td valign="middle"><img src="ui/evolution1/images/fmFolderClosed.gif" alt="" title=""></td><td valign="middle" width="100%"><a class="tableLink" target="" href="app?action=dms.ProjectsfileManager&amp;folderId=5691948&amp;returnAction=dms.ProjectsFileManager&amp;cancelAction=dms.ProjectsFileManager&amp;actionItemId=&amp;id=5103184&amp;type=Projects&amp;taskID=&amp;fromPage=&amp;rootFolderId=&amp;">Awards night - India</a></td><td valign="middle" align="left" nowrap="true" id="PPP"></td><td valign="middle" align="left" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="right" nowrap="true"></td><td valign="middle" align="center" nowrap="true">8/28/15 7:30 AM</td><td valign="middle" align="right"><select name="folder5691948" onchange="optionGoTo( this.form.name,'folder5691948')" class="docMgrAction"><option value=""></option></select></td></tr>
            </tbody>
</table>

URL名称是动态的,我需要搜索字符串并单击它。

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你只需要获取所有显示的URL的列表,然后点击你想要的URL。

简单易行。

Webelement element = driver.findElement(By.xpath("//*[text()='the_right_url.htm']"));

如果要验证网页上是否显示了URL,可以在此处进行检查 通过

if(element!=null)
    element.click()
else
    //test fails

第二种方式,您可以获取页面上显示的URL列表,然后按索引号单击所需的URL

Webelements [] ele = driver.findElements(By.xpath(//*/li)) //假设网址在li标签下

现在您可以浏览列表ele,使用循环可以循环播放并获取您想要的网址所在的索引号(using come count let say count)

然后使用

点击它
driver.findelemenet(By.xpath(//*/li[count]));

答案 1 :(得分:0)

如果您知道的文字将始终显示在链接中,您可以通过部分文字找到它

driver.FindElement(By.PartialLinkText("india"));

或使用contains

driver.FindElement(By.Xpath("//[contains(text(), 'india')]"));

请注意,这两个选项都区分大小写。