一尘不染

seleniumwebdriver选择元素

selenium

我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和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>

让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。


阅读 263

收藏
2020-06-26

共1个答案

一尘不染

那是因为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);
2020-06-26