8

テキストクローンの概念でスパンをクリックしようとしています。以下はhtmlです

<ul class="context-menu-list context-menu-root" style="width: 210px; top: 500px; left: 231px; z-index: 2;">
    <li class="context-menu-item">
    <li class="context-menu-item">
    <li class="context-menu-item disabled">
    <li class="context-menu-item">
    <li class="context-menu-item icon icon-evn-icon-clone-concept">
        <span>Clone concept</span>
    </li>
    <li class="context-menu-item">
    <li class="context-menu-item icon icon-delete disabled">
</ul>

私が使用するJavaScriptコードは次のとおりです。

driver.findElement(By.xpath("//span[text()='Clone concept']")).click();

これがfirepathを介して要素の権利であることを確認しました。

また、リンクに従って要素が表示されていることを確認しました現在表示されていない要素をクリックするようにSelenium WebDriverに強制する方法は?

これが計算されたcssです

font-family Verdana,?Arial,?Helvetica,?sans-serif
    .context-menu-list  Verdana,?Arial,?Helvetica,?sans-serif   
    jquery...enu.css (line 15)
    body    Arial,?Helvetica,?sans-serif    
    swa.css (line 3)
    font-size   11px
    .context-menu-list  11px    
    jquery...enu.css (line 15)
    list-style-type none
    .context-menu-list  none    
    jquery...enu.css (line 15)

次のコードも試しました:

WebElement foo = driver.findElement(By.xpath("//span[text()='Clone concept']"));
Actions bar = new Actions(driver);
bar.click(foo).perform(); 

例外: org.openqa.selenium.ElementNotVisibleException: 要素は現在表示されていないため、操作できない可能性があります コマンドの実行時間またはタイムアウト: 30.04 秒 ビルド情報: バージョン: '2.24.1'、リビジョン: '17205'、時刻: '2012 -06-19 16:53:24' システム情報: os.name: 'Windows 7'、os.arch: 'amd64'、os.version: '6.1'、java.version: '1.7.0' ドライバー情報: driver.version: RemoteWebDriver

どんな助けでも大歓迎です。

ここで行き詰まった人のためのもう 1 つのハック:
とりあえず、この巨大なテスト ケースをより単純なテスト ケースに分割することで、先に進むことができました。

4

4 に答える 4

12

残念ながら、Webdriver は、あなたの質問で説明されているような状況をうまく処理できないようです。ただし、いくつかのオプションがあります。Javascript を使用してクリックをモックします。

JavascriptLibrary jsLib = new JavascriptLibrary(); 
jsLib.callEmbeddedSelenium(selenium,"triggerMouseEventAt", elementToClick,"click", "0,0");

また

((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);

または、アクションを使用して、メニュー チェーン内のすべての要素をクリックすることもできます。残念ながら、これは信頼できないことがわかりました。

要素がメニューチェーンにあるかどうかを検出するスクリプトがあり、必要な順序でそれらをクリックして、必要に応じてユーザーが必要とするものを最終的にクリックする場合、どこかに投稿できますが、きれいではないか短い。

于 2012-08-23T05:02:37.510 に答える
1

上記のクエリの xpath は次のとおりです。

//ui[@class='context-menu-list context-menu-root']/span[contains(text(),'Clone concept')]
于 2014-09-12T06:58:34.887 に答える
0

問題は xpath にあります。Selenium webdriver は、画面内の xpath によって重複する要素を見つけていますが、これは非表示になっていて、操作を実行しようとしています。xpath を変更してください。動作します。私は自分のコードで同じことをしました..

于 2013-08-19T18:57:08.653 に答える