12

HTML ページに非表示の要素があり、その要素にマウスを合わせると表示されます。私がしなければならないことは

  1. 要素にカーソルを合わせます
  2. 要素をクリックします (4 つのオプションが表示されます)。
  3. いずれかのオプションをクリックします

私はセレンWebドライバーにJava APIを使用していますが、以下は私が試してきたことです

Actions builder = new Actions(driver);
builder.moveToElement(MainMenuBTN).click().build().perform();

subMenuBTN.click();
  1. MainMenuBTN = マウスを上に置くと表示される要素
  2. subMenuBTN = 表示されているメニュー オプションから選択されている要素

何が起こっているかというと、MainMenuBTN の click() が ElementNotVisible 例外を生成しています。これを回避するために次のことを試みましたが、うまくいきませんでした。

Actions builder = new Actions(driver);
builder.moveToElement(mainMenuBTN).build().perform();
builder.click();

subMenuBTN.click();

注 : mainMenuBTN と subMenuBTN は、によって生成される WebElements です。

driver.findElement(By.xpath("xpath_string"))

何か不足していますか?助けてください!

4

6 に答える 6

7

さて、あなたの質問を何度も見て、私の答えを何度も変えた後、私は行きます-

問題 - 元のコードから得たもの -

カーソルを mainMenuBTN に移動する必要があります (これは、マウスをその上に置いたときに表示される要素ではなく表示されます)。次に、クリックする必要がある subMenuBTN が表示されます。

私によると、元のコードへの唯一の編集は、カーソルをクリックする前にカーソルを subMenuBTN に移動するステートメントを追加することです。サブメニュー項目をクリックする必要がある場合、この方法はうまく機能します。

Actions builder = new Actions(driver);
builder.moveToElement(mainMenuBTN).build().perform();
builder.moveToElement(subMenuBTN).build().perform();
subMenuBTN.click();

その場合はお知らせください。

于 2012-10-17T11:39:18.563 に答える
7

のようなJavaScriptエグゼキュータを使用する

((JavascriptExecutor) webdriver).executeScript("document.getElementById('btn').click();");
于 2012-10-17T00:17:46.187 に答える
5

あなたの Actions ビルダーは、私には少し間違っているように見えます。これが私が使用する例です:

public static void mouseClickByLocator( String locator ) {    
  WebElement el = driver.findElement( By.cssSelector( locator ) );    
  Actions builder = new Actions(driver);    
  builder.moveToElement( el ).click( el );    
  builder.perform();    
}
于 2012-12-29T05:18:48.857 に答える
1
Actions builder = new Actions(driver);
builder.MoveToElement(menu).MoveToElement(submenu).Click().Perform();

Chrome では動作しますが、FF では動作しません

于 2013-02-06T14:13:57.437 に答える
0

私の場合、行のテーブルがありました。行にマウスを合わせると、列の 1 つ (td) に 4 つのアイコンが表示され、それをクリックする必要があります。

Action action=new Action(driver);
action.moveToElement(hoverElt).clickAndHold().build().perform();

それは私のために働いた。 moveToELement()コントロールを要素に移動します

clickAndHold()ホバリングされた要素をクリックして保持するため、表示されている要素を簡単に操作できます。

于 2020-09-21T12:27:14.157 に答える