如何在硒中找到价值

时间:2014-04-15 17:42:08

标签: selenium selenium-webdriver

我试图从下面的html中获取属性“value”的值。我所知道的唯一值是<b>标记。名称和值会根据<b>标记不断变化。

<input type="hidden" name="expressions[1].checked"/>
<input type="hidden" value="B" name="expressions[1].expressionLabel"/>
<b>Description</b>
<input type="hidden" value="Description" name="expressions[1].parameterName"/>
<input type="hidden" value="Description" name="expressions[1].fieldName"/>
<input type="hidden" value="RF" name="expressions[1].fieldType"/>
<input type="hidden" value="" name="expressions[1].limitedValues"/>



<input type="hidden" name="expressions[0].checked"/>
<input type="hidden" value="A" name="expressions[0].expressionLabel"/>
<b>Create Date</b>
<input type="hidden" value="StartCreateDate" name="expressions[0].parameterName"/>
<input type="hidden" value="CreateDate" name="expressions[0].fieldName"/>
<input type="hidden" value="RF" name="expressions[0].fieldType"/>
<input type="hidden" value="" name="expressions[0].limitedValues"/>


<tr>
<td colspan="4">
<table width="100%" cellspacing="0" cellpadding="4" border="0">
<tbody>
<tr>
<td class="bb" align="left" colspan="4">
<div id="criteria_table">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="pad s_pad_right">
<table id="criteria_items" class="table_form_advanced" width="100%" cellspacing="0" cellpadding="4" border="0">
<tbody>
<tr>
<td>
<div>
<div>
<table>
<tbody>
<tr>
<td width="150" valign="top">
<input type="hidden" name="expressions[0].checked"/>
<input type="hidden" value="A" name="expressions[0].expressionLabel"/>
<b>Description</b>
<input type="hidden" value="Description" name="expressions[0].parameterName"/>
<input type="hidden" value="Description" name="expressions[0].fieldName"/>
<input type="hidden" value="RF" name="expressions[0].fieldType"/>
<input type="hidden" value="" name="expressions[0].limitedValues"/>
</td>
<td width="120" valign="top">
<select class="FormSelect" title="Operator" name="expressions[0].operationName">
<option selected="" value="contains">contains</option>
<option value="does not contain">does not contain</option>
</select>
</td>
<td valign="top">
<input class="FormSelect" type="text" title="Description" value="" name="expressions[0].values" maxlength="255" size="20"/>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>

3 个答案:

答案 0 :(得分:4)

类似于@ lost_boatman的答案,但有一些具体细节......

在C#中(Java将非常相似 - 它主要是不同的大写字母):

string value = driver.FindElement(By.XPath("//b[text() = 'Description']/following-sibling::input[1]")).GetAttribute("value");

预期回报:值==&#34;描述&#34;

你也可以输入[1]&#39;表达式的一部分更具体,如果FIRST输入标记的值始终不是所需的 - 例如,您希望仅获得&#39;值&#39;输入标记中的属性包含&#39; name =&#34;表达式[1] .fieldType&#34;&#39;。你的表达可能看起来像

string value = driver.FindElement(By.XPath("//b[text() = 'Description']/following-sibling::input[contains(@name, 'fieldType')]")).GetAttribute("value");

预期回报:价值==&#34; RF&#34;

答案 1 :(得分:0)

使用xpath。

声明将如下:

driver.findElement(By.xpath(“your elements xpath”))。getAttribute(“attribute name”);

属性名称将是您案例的值。

您也可以使用 driver.findElement(By.name(“element_name”))。getAttribute(“attribute name”);

答案 2 :(得分:0)

如果你想获得某些输入元素的值,你可以使用:

IList<IWebElement> listOfInputs = driver.FindElements(By.TagName("input"));
string value = listOfInputs[index of input you want to check].GetAttribute("value");