首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium从网站读取内容

Selenium从网站读取内容
EN

Stack Overflow用户
提问于 2013-08-01 19:45:27
回答 2查看 2K关注 0票数 0

我在一个网页上有一些类似这样的内容。

代码语言:javascript
运行
复制
 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..

代码语言:javascript
运行
复制
<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>

我怎样才能实现我所说的?任何意见都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2013-08-02 00:23:00

在看不到HTML语言或代码的情况下,我假设您提供的表是在一个有序的<table><tr><td>...</td><td>...</td></tr></table>表单中设置的。在这种假设下,您可以只使用已经使用的代码来查找appname,然后使用webdriver的Xpath/Jquery (基于您使用的浏览器)定位功能,通过您找到的appname元素所属的<tr><td>索引来查找适当的数据值。当你有元素“选择”时,只需返回标签值并将其保存在代码中的一个变量中。

票数 0
EN

Stack Overflow用户

发布于 2013-08-05 22:54:43

如果你所要做的就是应用程序的名字,那么你需要这样做:

  1. 标识包含应用程序名称的表单元格(td)的WebElement。
  2. 使用相对xpath标识下一个表单元格。
  3. 从该表单元格中提取文本。
  4. 沿行重复步骤2-3。<代码>H29<代码>G210

以下是一些简化的webdriver代码,从原理上说明了它是如何工作的:

代码语言:javascript
运行
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17993162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档