【问题标题】:Get element text from this span using Selenium WebDriver and C#使用 Selenium WebDriver 和 C# 从此范围获取元素文本
【发布时间】:2016-08-03 16:04:29
【问题描述】:

我已经用尽了我的精神资源,无法解决这个难题。我正在尝试从 id =“lookupCount”的跨度中提取文本。我想要那里的“9”,但无论我多么努力,它都不起作用。请帮忙,下面是html。

为了清楚起见,我想要这个文本的值 - “9”

<div class="addressSelectionDiv" style="width:330px; margin-left:0px; margin-top:40px; ">
<table id="addressSelectionTable" align="center" width="100%" cellspacing="2" cellpadding="0">
<tbody>
<tr style="height:15px;">
<td>
<div id="App.ctl00_leftContent_addressSelection_validationLabel_Container" style="display:inline;">
<label id="ctl00_leftContent_addressSelection_validationLabel" class="x-label x-label-default x-border-box" for="" style="color:#981e32;font-size:1.0em;">
<img id="ext-gen1029" class="x-label-icon" src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" style="display: none;"/>
<span id="ext-gen1030" class="x-label-value"/>
</label>
</div>
<span id="lookups" style="visibility: hidden; float: right;">
<span id="lookupCount">9</span>
/
<span id="lookupLimit">100</span>
</span>
</td>
</tr>
<tr valign="top">
<tr>
</tbody>
</table>
</div>

这是我尝试过的

  • var x = Driver.FindElement(By.Id("lookupCount")).Text 返回 ""
  • var x = Driver.FindElement(By.Id("lookups")).Text 返回 ""
  • 即使我删除了 .Text 属性,上述对象都不包含任何可以引导我找到答案的信息。
  • 下面的 2 行在第 [0] 个元素中返回“”。

ICollection<IWebElement> table = Driver.FindElements(By.Id("lookups")); List<IWebElement> elements = table.ToList();

下面的返回这个字符串:

Search for Household Decisions by entering an address or ZIP code:\r\n\r\n AL\r\n AK\r\n AZ\r\n AR\r\n CA\r\n CO\r\n CT\r\n DC\r\n DE\r\n FL\r\n GA\r\n HI\r\n ID\r\n IL\r\n IN\r\n IA\r\n KS\r\n KY\r\n LA\r\n ME\r\n MD\r\n MA\r\n MI\r\n MN\r\n MS\r\n MO\r\n MT\r\n NE\r\n NV\r\n NH\r\n NJ\r\n NM\r\n NY\r\n NC\r\n ND\r\n OH\r\n OK\r\n OR\r\n PA\r\n RI\r\n SC\r\n SD\r\n TN\r\n TX\r\n UT\r\n VT\r\n VA\r\n WA\r\n WV\r\n WI\r\n WY

ICollection<IWebElement> table = Driver.FindElements(By.Id("addressSelectionTable")); List<IWebElement> elements = table.ToList();

【问题讨论】:

  • 我尝试了所有我能想到的方法:使用“addressSelectionTable”获取元素并循环遍历它们,只返回了一堆与我的目的无关的文本。使用 id="lookups" 阅读文本。使用 'id=lookupCount' 查看任何值。都是这样的,“Driver.FindElement(By.Id("lookupCount")).Text”,只是改变了Id。它们要么返回与我的目的无关的文本字符串,要么返回“”。

标签: c# html selenium webdriver


【解决方案1】:

返回位于 Id 为“lookupCount”的元素的打开/关闭标记之间的文本:

driver.FindElement(By.Id("lookupCount")).Text;

返回 id 为 "lookupCount" 的打开/关闭标签之间的 html 代码:

driver.FindElement(By.Id("lookupCount")).HtmlInner;

【讨论】:

  • 最好在你的答案中添加一些解释
  • 返回“”。如果就这么简单,我就不会来这里了。此外,没有 HtmlInner 属性。
  • 看起来你做错了什么或者你的环境有问题,因为相同的代码在我这边工作得很好:prntscr.com/7y1246 这是相同的代码,但包装到另一个类和方法.
  • @Andrew 你觉得环境怎么样?我觉得这样也应该有效
  • @user1579407,不知道。但正如您在屏幕截图中看到的那样,这段代码在我这边运行良好。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多