我在我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我做(我的同班同学下的第一个2线和我的方法selectByValue
)selenium webdriver select元素
@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>
让我说,我有一个解决我的问题但我不明白为什么“正常”路径无法正常工作。
啊这是有道理的,它只是看起来像它应该有工作,所以我从来没有真的很深入。我的错。谢谢 – ducati1212 2012-03-07 15:48:42
注意:如果您在您的类中包含Select声明并将其转换到专用WebElement声明的下面,那么当类实例化时,您将获得运行时错误;为了避免这种情况,可以将Select声明和类放入与屏幕控件进行交互的方法中。再次不理想,但它似乎工作。 – 2013-04-30 10:53:04
使用这种方法,页面对象应该在页面完全加载并且该对象存在并且在驱动程序中可见后进行初始化。为了让它代理,请看看[我的实现](http://stackoverflow.com/questions/35931667/select-object-on-seleniums-pagefactory/36004572#36004572) – rrw 2016-03-17 00:45:16