有没有办法找到下拉列表选项的XPATH使用名称" test1"," first_test"," i2"," i3&#34 ;如下面的代码中所述

时间:2014-03-11 15:22:59

标签: selenium xpath selenium-webdriver

有没有办法找到下拉列表选项的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以上。如果我找到使用名称的选项,那将很容易。

提前致谢:)

3 个答案:

答案 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");