Selenium从网站上阅读内容

时间:2013-08-01 11:45:27

标签: c# selenium

我在网页上有这样的内容。

 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应该检索价格,有效性和部件号字段的值。我尝试使用selenium来使用classname,tagname,id等属性来检索值。但是所有字段对于每个字段都具有相同的属性,这使得selenium难以选择字段。

我唯一能找到不同的是innertext,我不能在这里使用,因为我无法预测用户在我的应用程序开始时作为appname在appbox中提供的内容。

我的示例html代码,我在网站上点击字段(价格)后得到的代码。我为此使用了萤火虫。我正在使用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>

我怎样才能实现我的目标?任何评论都会非常感激......

2 个答案:

答案 0 :(得分:0)

如果没有看到HTML或您的代码,我会假设您提供的表格是以有序<table><tr><td>...</td><td>...</td></tr></table>形式设置的。在此假设下,您可以使用已经使用的代码来查找appname,然后使用webdriver的Xpath / Jquery(基于您正在使用的浏览器)定位能力来查找{{1}的相应数据值你找到appname元素的<td>索引。 如果元素为“selected”,则只返回标签值并将其保存在代码中的变量中。

答案 1 :(得分:0)

如果您只需要继续使用应用名称,那么您需要这样做:

  1. 标识表格单元格(td)包含应用程序名称的WebElement。
  2. 使用相对xpath来识别下一个表格单元格。
  3. 从该表格单元格中提取文本。
  4. 沿着这一行重复步骤2-3。
  5. 以下是一些简化的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类型。