1

私はこのコードを持っています

<a href="/iot/apply/device.do" id="subMenu1" class="fortification55"
                                                        onclick="$('#deviceinfo').hide()">Apply</a>

href を使用してリンクしようとしています

getDriver().findElement(By.name("subMenu1")).click();

しかし、私はこのエラーが発生しました

org.openqa.selenium.NoSuchElementException: Unable to find element with name == subMenu1 (WARNING: The server did not provide any stacktrace information)
4

2 に答える 2

2

要素にはonclick Eventがあるため、WebElementJavaScript対応要素です。したがってclick()、要素で呼び出すには、WebDriverWaitを使用する必要elementToBeClickable()があり、次のLocator Strategiesのいずれかを使用できます。

  • cssSelectorhref属性のみを使用:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a[href='/iot/apply/device.do']"))).click();
    
  • xpathとhref属性のみを使用:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@href='/iot/apply/device.do' and text()='Apply']"))).click();
    
  • 正規のcssSelectorを使用する:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.fortification55#subMenu1[href='/iot/apply/device.do']"))).click();
    
  • 正規のxpathを使用する:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='fortification55' and @id='subMenu1'][@href='/iot/apply/device.do' and text()='Apply']"))).click();
    
  • :次のインポートを追加する必要があります:

    import org.openqa.selenium.support.ui.WebDriverWait;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.By;
    

参考文献

NoSuchElementExceptionに関するいくつかの関連する議論は、次の場所にあります。

于 2020-06-29T13:44:20.413 に答える
-1

次のコードが機能するはずです:

By.xpath("//a[@href='/iot/apply/device.do']")
于 2016-08-22T18:32:22.377 に答える