Selenium.IsElementPresent使用Select Option的文本(C#)

时间:2009-08-05 02:12:24

标签: c# xpath selenium selenium-rc

我在C#中使用Selenium与Selenium RC进行一些自动交互测试,但遇到了绊脚石。

鉴于此HTML:

<select id="my-select-list">
    <option value="1">First option</option>
    <option value="2">Second option</option>
    <option value="3">Third option</option>
    <option value="4">Fourth option</option>
</select>

我想测试以确保页面上显示“第三选项”选项。

以下所有测试都失败了,即返回false:

Selenium.IsElementPresent("//select/option[@label='Third option']")
Selenium.IsElementPresent("//select[option='Third option']")
Selenium.IsElementPresent("//select[contains(option, 'Third option')]")
Selenium.IsElementPresent("//option[contains(., 'Third option')]")
Selenium.IsElementPresent("//option[contains(text(), 'Third option')]")

它是Selenium(RC / .NET)的限制还是有另一种方法可以选择它?

聚苯乙烯。我知道我可以使用选项的值进行测试,但这可能会改变,文本肯定不会。

编辑:PEBKAC错误

对不起,我的不好。似乎硒加载的位置与我想象的不同。

以下XPath查询所有工作:

Selenium.IsElementPresent("//option[text()='Third option']")
Selenium.IsElementPresent("//select[option='Third option']")
Selenium.IsElementPresent("//option[contains(., 'Third option')]")
Selenium.IsElementPresent("//option[contains(text(), 'Third option')]")

2 个答案:

答案 0 :(得分:2)

我的XPath有点生疏,但你试过......

Selenium.IsElementPresent("//option[text()='Third option']");

答案 1 :(得分:0)

第1步:获取下拉列表中的所有选项

选择select = new选择(driver.findElement(By.id(&#34; my-select-list&#34;))); String [] options = select.getOptions();

步骤2:检查天气特定选项(&#34;第三选项&#34;)出现在下拉列表中。

for(String option:options)

{

if(!option.equals(&#34; Third option&#34;))

FAIL;

否则

PASS;

}