我在我的網站上有一個選擇控件。我正在使用頁面對象與頁面進行交互。如果我做(我的同班同學下的第一個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