无法使用Selenium WebDriver从“选择列表”中找到名称

时间:2016-07-15 02:32:43

标签: selenium

我正在尝试找到选项值“选择帐户”。页面后面的Html代码是:

<tbody>
<tr class="alt first">
<tr>
<td height="30">
<select id="pkitem" name="pkitem" size="1" class="selectfont"    onchange="multipickvalue(document.formMain.pkitem,document.formMain.listdata);document.formMain.listmodified.value=1;">
<option value="">--- Select Account---</option>
<option value="**COPY" size="small">*PRIVATE AND CONFIDENTIAL* CON  (**COPY)  </option>
<option value="ALDWYCH" size="small">*PRIVATE AND CONFIDENTIAL* CON  (ALDWYCH)</option>
<option value="56456465456456456" size="small">12345  (56456465456456456)</option>
<option value="12345" size="small">123456  (12345)</option>
<option value="2SISTERGRP" size="small">2 SISTERS FOOD GROUP  (2SISTERGRP)</option>
<option value="402SIST12" size="small">2 SISTERS FOOD GROUP  (402SIST12)</option>

我正在使用的C#代码是:

var SelectAcc1 = Driver.Instance.FindElement(By.Id("pkitem"));
var SelectElement = new SelectElement(SelectAcc1);
SelectElement.SelectByText(SelectAcc);

无法找到字段名称。有人可以帮忙。

2 个答案:

答案 0 :(得分:0)

首先,我们无法找到Text&#39; SelectAcc&#39;在您的HTML代码上。

其次,您没有使用Select类Selenium框架,这有助于处理选择列表。

第三,即使您已将Select类初始化到代码中的某个位置,但Select类也没有SelectByText名称的任何方法。

第四,传递值的方式是不正确的,它期望一个String值,所以它应该是双引号,即它应该像

selectByVisibleText("123456  (12345)");

参考SELECT CLASS

从选择列表中选择值有3种方法  1. selectByIndex
 2. selectByValue
 3. selectByVisibleText

答案 1 :(得分:0)

要查找元素,请使用Xpath查找元素或从SelectElement匹配中获取value属性为String.Empty

的选项
IWebElement SelectAccount = driver.FindElement(By.XPath(@"//select[@id='pkitem']/option[@value='']"));

IWebElement SelectAcc1 = driver.FindElement(By.Id("pkitem"));
SelectElement selectElement = new SelectElement(SelectAcc1);
IWebElement SelectAccount = selectElement.Options.FirstOrDefault(o => o.GetAttribute("value").Equals(string.Empty));
// This approach is slower than the first one