0

図に示すように、Web アプリケーションのテスト中にエラーが発生し、メニュー項目 (Create Defect...) をクリックできません。

**org.openqa.selenium.ElementNotVisibleException: Cannot click on element**

クリックしたい

以下のコードは、図に示すように画像 (手の画像) をクリックします。

driver.findElement(By.xpath("//div[@id='divToolbar']/div/table/tbody/tr/td[2]")).click();

そしてメニューが開きます。ここで、メニュー項目をクリックします。これには以下のコードを使用しています

     driver.findElement(By.xpath("html/body/div[10]/div/div/div/div/div/ul/li[1]")).click();

しかし、私は上記の例外を得ました

これは私がhtmlに持っているものです:

<div class="mmenu" style="display: block; left: 49px; top: 37px;">
<div class="mmenu-content">
<div class="mmenu-border" style="width: 231px;">
<div class="mmenu-inset" style="width: 231px;">
<div class="mmenu-group first-child last-child">
<div class="mmenu-column first-child last-child">
<h3>
<ul>
<li id="liemx360120335239.81635" class="link" menuuid="emx360120335239.81635">
<span class="icon">
<span>Create Defect...</span>
</li>
<li id="liemx172704021676.66638" class="link" menuuid="emx172704021676.66638">
</ul>
</div>
</div>
</div>
</div>
</div>
</div>

提案していただけますか?

4

2 に答える 2

0

driver.findElement(By.xpath("//span[contains(text(),'Create Defect...']")).click();を試しましたか?

于 2012-11-07T16:14:01.077 に答える
0

あなたの問題は、2番目のメニューが見えないことであり、WebDriverが見えないElementNotVisibleExceptionロケーターを操作するとスローすることだと思います。クリックしようとすると2番目のメニューが表示されるため、最初のメニューを開いたままにしておく必要があると思います。Actionsクラスを使用します。次のことを試してください:

new Actions(getWebDriver()).moveToElement(driver.findElement(By.xpath(...))).perform();

2番目のロケーターをクリックしようとした直後。それでも問題が解決しない場合は、同じアクションで両方のコマンドをチェーンしてみてください。

于 2012-11-07T20:07:19.553 に答える