有没有办法找到下拉列表选项的XPATH位置,使用下面代码中提到的文本“test1”,“first_test”,“i2”,“i3”。
<select id="listid_select" class="select-box" style="width:100px;" name="list_id">
<option value="">NONE</option>
<option value="1">test1</option>
<option value="3">first_test</option>
<option value="6">i2</option>
<option value="7">i3</option>
<option value="8">i4</option>
<option value="9">i5</option>
<option value="10">i6</option>
<option value="11">i7</option>
<option value="12">i8</option>
<option value="13">i9</option>
<option value="14">Clone1</option>
我需要根据“文本名称”找到该选项,而不是使用“值”,因为有些值会持续到300以上。如果我找到使用名称的选项,那将很容易。
提前致谢:)
答案 0 :(得分:6)
Selenium具有Select
功能,允许您通过文本或值进行选择。这是一个c#示例:
IWebElement element = driver.FindElement(By.XPath("//select[@id='listid_select']"));
SelectElement select = new SelectElement(element);
select.SelectByText("i2");
答案 1 :(得分:0)
理查德的答案是最正确的,但如果你想只使用XPath,你可以。请注意,这是webdriver不能完全模仿用户行为的一个区域, NOT 必须单击select元素然后选项元素,只需单击选项元素即可。
也是一个C#示例:
IWebElement element = driver.FindElement(By.XPath("//select[@id='listid_select']/option[text()='i2']"));
element.Click();
答案 2 :(得分:0)
你可以这样做,使用Java:
import org.openqa.selenium.support.ui.Select;
....
public void selectByString( String str ) {
try {
Select( driver.findElement( By.id("listid_select") )
.selectByVisibleText( str );
return true;
} catch ( Exception e ) {
return false;
}
}
...
boolean selected = selectByString( "test1");