0

これを実現するには、Linux マシンで Selenium を実行し、HtmlUnitDriver を使用する必要があります。

Selenium スクリプトには、要素を見つけるための Xpath のほとんどが含まれています。実行中、xpath が使用されている場所で NoSuchElementException が表示されます。

org.openqa.selenium.NoSuchElementException: Unable to locate a node using //*[contains(text(),'Sample Text')]
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

同じコードは、Chrome、Firefox、IE などの他のドライバーでも問題なく動作します。

私のコードは以下のようになります。

 HtmlUnitDriverdriver = new HtmlUnitDriver();
    driver.setJavascriptEnabled(true);
    driver.get("http://example.com");
    driver.findElement(By.id("username")).sendKeys("xxx");
    driver.findElement(By.id("password")).sendKeys("yyy");
    driver.findElement(By.id("loginButton")).click();
    Thread.sleep(2000);
    driver.findElement(By.xpath("//*[contains(text(),'Sample Text')]")).click();

私は多くの同様の質問を見つけました。解決策は、スリープ時間を提供するか、要素がロードされるまで待つことです。私はすべてを提供しましたが、xpath を使用すると、まだこの問題に直面しています。

また、ID または名前で要素を見つけることは、毎回異なるため、私のユース ケースでは不可能です。

span タグ内のテキストを検索するには、xpath のみを使用できます。

これを処理するためのソリューションが必要です。前もって感謝します!

編集 :

Gmailのログインでも同じことを試しましたが、それでも同じ問題が発生しています。

driver.get("http://www.gmail.com");
        driver.findElement(By.id("Email")).sendKeys("xxx@gmail.com");
        driver.findElement(By.id("next")).click();
        Thread.sleep(2000);
        driver.findElement(By.id("Passwd")).sendKeys("yyy");
        driver.findElement(By.id("signIn")).click();
        Thread.sleep(8000);
        driver.findElement(By.xpath("//*[contains(text(),'COMPOSE')]")).click();
4

2 に答える 2

0

text()そのような問題を引き起こす可能性がある を取り除くことも検討してください。代わりにこれを使用してください:

contains(., 'Sample Text')

ここで問題が発生した場合、これが原因であるかどうかはわかりません。あなたが私たちに提供したいくつかの情報を考えると、これは盲目的なショットです.

于 2015-06-12T12:58:12.660 に答える