我在一个网页上有一些类似这样的内容。
 Appname       Description      Price     Part Number      Validity
 App1           some desc1     25         JH32            30
 App2           some desc2     250        PB36            180
 App2           some desc3     20         QL76            10
 App3           some desc4     50         KQ3J            30我的应用程序类似于在启动应用程序后,用户将输入一个应用程序名称,selenium将在该应用程序名称中搜索此站点中的特定appname。除了这一步,我想要的是:
无论我搜索什么appname,selenium都必须检索与selenium等字段相对应的值,这些字段应该检索Price、Validity和Part Number字段的值。我尝试过selenium通过使用类名、标记名、id等属性来检索值,但是所有的字段对于每个字段都有相同的属性,这使得selenium很难选择字段。
我发现唯一不同的是innertext,我不能在这里使用它,因为我不能预测用户会在应用程序开始时在搜索框中给出什么作为appname。
我的示例html代码,它是我单击站点中的一个字段(价格)时得到的。为此,我使用了firebug。我正在使用firefox浏览器来安装selenium..
<td height="100%" class="ms-vb-title"><table height="100%" cellspacing="0" surl="" uis="512" cid="0x0100DFF86ACBE51BE549AA56639FCC32D7E0" ctype="Item" ms="0" csrc="" hcd="" couid="" otype="0" icon="icgen.gif||" ext="" type="" perm="0x1b03c4312ef" dref="sites/SoftwareDev/IAG/IAS/Lists/Unify Parts" url="/sites/SoftwareDev/IAG/IAS/Lists/Unify%20Parts/27_.000" id="27" ctxname="ctx1" onmouseover="OnItem(this)" class="ms-unselectedtitle"><tbody><tr><td width="100%" class="ms-vb"><a target="_self" onclick="GoToLink(this);return false;" href="/sites/SoftwareDev/IAG/IAS/Lists/Unify%20Parts/DispForm.aspx?ID=27" onfocus="OnLink(this)">MindMeister - 251-500 Pupil License<img height="1" border="0" width="1" alt="Use SHIFT+ENTER to open the menu (new window)." class="ms-hidden" src="/_layouts/images/blank.gif"></a></td><td><img width="13" alt="" style="visibility:hidden" src="/_layouts/images/blank.gif"></td></tr></tbody></table></td>我怎样才能实现我所说的?任何意见都将不胜感激。
发布于 2013-08-02 00:23:00
在看不到HTML语言或代码的情况下,我假设您提供的表是在一个有序的<table><tr><td>...</td><td>...</td></tr></table>表单中设置的。在这种假设下,您可以只使用已经使用的代码来查找appname,然后使用webdriver的Xpath/Jquery (基于您使用的浏览器)定位功能,通过您找到的appname元素所属的<tr>的<td>索引来查找适当的数据值。当你有元素“选择”时,只需返回标签值并将其保存在代码中的一个变量中。
发布于 2013-08-05 22:54:43
如果你所要做的就是应用程序的名字,那么你需要这样做:
td)的WebElement。以下是一些简化的webdriver代码,从原理上说明了它是如何工作的:
WebElement td_appname = driver.findElement.ByLinkText("MindMeister - 251-500 Pupil License");
WebElement td_appdescription = td_appname.findElement.Byxpath("./../td[2]");
String appdescription = td_appdescription.getText();这里,关键的一点是第三行代码中的xpath。这只适用于非常简单的表结构( table /tbody/tr/td);但是您的表结构要复杂得多,因此您需要为您的网站结构找出适当的相对xpath。我建议使用优秀的浏览器开发人员工具(例如,在firefox上,使用firebug和firepath)来仔细查看DOM树,并找出从一个计算单元到下一个计算单元需要使用哪种xpath。
https://stackoverflow.com/questions/17993162
复制相似问题