我在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')]")
答案 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;
}