0

だから私はこれを数時間解決しようとしてきました。私は自分が間違っていることの手がかりがありません。

これは私が探しているタイプアヘッドフィールドです<input type="text" id="id_attendees" name="attendees">。そこに入力すると、jsドロップダウンが作成されます。キーボードの下矢印を押すと、正常に機能し、一番上の選択肢が選択されます。IDEで行うkeyDown --- id=id_attendees --- \40と、正常に動作し、選択肢も選択されます。

JavaWebドライバーで同じことをすることはできませんが

Actions actionObject = new Actions(driver);
actionObject.sendKeys(Keys.ARROW_DOWN);

^動作しません。

driver.findElement(By.id("id_attendees")).sendKeys(Keys.ARROW_DOWN);

^動作しません

どちらの場合もKeys.DOWNを試しましたが、どちらも機能しません。リテラルを作成しましたが、String altm = "\u0040";それは@記号を入力するだけです。

他にもたくさん試しましたが、何も機能していません。何が欠けているのかわかりません。

編集1:

@Roddyありがとうございます!-そのリンクを前提として、(DefaultSeleniumとWebDriverBackedSeleniumをインポートした後に)機能する次のものを追加しました。

DefaultSelenium sel = new WebDriverBackedSelenium(driver,vars.siteurl);
sel.fireEvent("//input[@id='id_attendees']", "keydown");

編集2: ->動作しないDOH。どうやら熱狂しすぎたようです。

4

3 に答える 3

0

あなたのアクションの使い方は正しくないと思います。

実装はビルダー パターンです。sendKeysを呼び出してもイベントは送信されません。 performを呼び出したときに発生するイベントをステージングするだけです。sendKeysの戻り値はActionsインスタンスであることに注意してください。

Actions actionObject = new Actions(driver);
actionObject = actionObject.sendKeys(Keys.ARROW_DOWN); //ASSIGN the return or you lose this event.
actionObject.perform();  //Should do what you want.  Note that this will reset the builder.

それが役立つことを願っています。

于 2017-02-18T20:11:35.007 に答える