selenium webdriver选择元素

时间:2012-03-07 15:31:33

标签: selenium webdriver selenium-webdriver

我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(我班下的前两行和我方法中的selectByValue

@FindBy(id="foo")
private Select foo;

foo.selectByValue("myValue");

它以空指针失败。我也试过没有@FindBy

现在如果我在我的方法中这样做,一切正常并选择正确的项目

Select foo = new Select(sDriver.findElement(By.id("foo")));
foo.selectByValue("myValue");

以下是该控件的实际网络摘要(已编辑以保护无辜者)

<select id="foo" name="service_name">
    <option selected="selected" value="one">one</option>
    <option value="two">two</option>
    <option value="three">three</option>
</select>

让我说我有一个解决我的问题的方法但是我不明白“普通”路径无效的原因。

3 个答案:

答案 0 :(得分:23)

那是因为Select类有这个构造函数:

Select(WebElement element)

请参阅Javadoc

所以如果你做这样的事情:

@FindBy(id="foo")
private WebElement wannabeSelect;
Select realSelect = new Select(wannabeSelect);
realSelect.selectByValue("myValue");

它应该工作。

顺便说一句,我在“解决方法”中使用的方法与你相同,因为我不想在需要Select对象时转换新的WebElement对象。但无论如何,

sDriver.findElement(By.id("foo"));

返回WebElement,这就是为什么它的工作原理。你也可以这样做:

 WebElement wannabeSelect = sDriver.findElement(By.id("foo"));
 Select foo = new Select(wannabeSelect);

答案 1 :(得分:2)

有两种方法可以选择选项值:

一:

// Denotes option value - technical name
select.selectByValue(fieldValue);       

二:

// Denotes option text that is actually visible to be selected
select.selectByVisibleText(fieldValue);

答案 2 :(得分:1)

我实现此目的的另一种方法是使用下面的方法为我的所有onchange下拉选择框。传递ID和选择,它的工作原理

public void onchangedropdownselection(String object, String value) {
        driver.findElement(By.id(object)).sendKeys(value);
        driver.findElement(By.id(object)).sendKeys(Keys.UP);
        driver.findElement(By.id(object)).sendKeys(Keys.DOWN);
    }

通过上下做,我们正在初始化脚本.......