私は自分のサイトで選択コントロールを持っています。私はページオブジェクトを使ってページとやり取りしています。私は(私のクラスの下の最初の2行と、私の方法でselectByValue
付き)セレンのwebdriver選択要素
@FindBy(id="foo")
private Select foo;
foo.selectByValue("myValue");
を行う場合にはNULLポインタで失敗します。私も@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>
があります
私の問題のために回避策があるとしましょうしかし "普通"のパスが機能しない理由がわかりません。
ああONCHANGEスクリプトをinitialzingています本当に深く掘り下げた私のせい。ありがとうございます – ducati1212
注:Select宣言をインクルードしてクラスにキャストし、プライベートWebElement宣言のすぐ下にクラスをインスタンス化すると、ランタイムエラーが発生します。これを避けるには、スクリーンコントロールとのやりとりを行うメソッドにSelect宣言とクラスを入れることができます。再び理想的ではありませんが、うまくいくようです。 –
この方法では、pageobjectsは、ページが完全にロードされ、オブジェクトが存在し、ドライバに表示された後で初期化する必要があります。それをプロキシにするには、[私の実装](http://stackoverflow.com/questions/35931667/select-object-on-seleniums-pagefactory/36004572#36004572) – rrw