我正在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"> </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"> </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&folderId=5697033&returnAction=dms.ProjectsFileManager&cancelAction=dms.ProjectsFileManager&actionItemId=&id=5103184&type=Projects&taskID=&fromPage=&rootFolderId=&">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"> </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&folderId=5687045&returnAction=dms.ProjectsFileManager&cancelAction=dms.ProjectsFileManager&actionItemId=&id=5103184&type=Projects&taskID=&fromPage=&rootFolderId=&">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"> </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&folderId=5693965&returnAction=dms.ProjectsFileManager&cancelAction=dms.ProjectsFileManager&actionItemId=&id=5103184&type=Projects&taskID=&fromPage=&rootFolderId=&">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"> </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&folderId=5691948&returnAction=dms.ProjectsFileManager&cancelAction=dms.ProjectsFileManager&actionItemId=&id=5103184&type=Projects&taskID=&fromPage=&rootFolderId=&">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名称是动态的,我需要搜索字符串并单击它。
答案 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')]"));
请注意,这两个选项都区分大小写。