0

必要な URL にあるすべてのリンク ページの内容を確認しようとしています。

だから私は次のことをします:

1- 必要な URL 内のすべてのリンクを見つける

2- リンクの検証を確認する (href コンテンツ)

3- 各リンクに移動します

5-各リンクの状態を確認してください

    String[] links = null;
    int linksCount = 0;
    System.setProperty("webdriver.chrome.driver", "Resources/chromedriver.exe");
    WebDriverRunner.setWebDriver(new ChromeDriver());   
    driver= WebDriverRunner.getWebDriver();


    open("http://vanilla.sa/");
    List<WebElement> linksize = WebDriverRunner.getWebDriver().findElements(By.tagName("a")); 
    linksCount = linksize.size();
    links= new String[linksCount];
    out.println("List of links Available: ");  

    for(int i=0;i<linksCount;i++)
    {
        links[i] = linksize.get(i).getAttribute("href");

    } 
    // navigate to each Link on the webpage
    for(int i=0;i<linksCount;i++)
    {

        System.out.println(links[i]);
        driver.navigate().to(links[i]);
        Selenide.sleep(7);
        WebElement error = $(Selectors.byText("condition")); 
        $(error).shouldNotBe(visible)
            .shouldNotBe(text("condition"));

    }

1 つの URL についてこの条件を確認しようとしたところ、うまくいきました
が、上記の例のように別のリンク (URL) に自動的に移動すると、次の例外が発生します。

http://vanilla.sa/%D8%AD%D9%82%D8%A7%D8%A6%D8%A8/%D8%AD%D9%82%D8%A7%D8%A6%D8%A8- %D9%83%D8%A8%D9%8A%D8%B1%D8%A9 org.openqa.selenium.InvalidSelectorException: 無効なセレクター: 次のエラーのため、xpath 式の要素が見つかりません.//*/text()[normalize-space(.) = "condition"]/parent::*: TypeError: 失敗しました'Document' で 'createNSResolver' を実行してください: パラメータ 1 はタイプ 'Node' ではありません。(セッション情報: chrome=49.0.2623.87) (ドライバー情報: chromedriver=2.9.248315,platform=Windows NT 6.2 x86_64) (警告: サーバーはスタックトレース情報を提供しませんでした) コマンド期間またはタイムアウト: 74 ミリ秒 このドキュメントについてはエラー、訪問してください: http://seleniumhq.org/exceptions/invalid_selector_exception.html ビルド情報: バージョン: '2.50.1'、リビジョン: 'd7fc91b'、時刻: '2016-01-29 19:04:49' システム情報: ホスト: 'Hana'、os.name: 'Windows 8'、os .arch: 'amd64', os.version: '6.2', java.version: '1.7.0_80' *** 要素情報: {Using=xpath, value= .//*/text()[normalize-space(.) = "condition"]/parent::*} セッション ID: 94c50df8d0862e2060230a819395224e ドライバー情報: org.openqa.selenium .chrome.ChromeDriver

4

3 に答える 3

0

Florent B.による上記の回答はかなり良いようです。

コーディング スタイルについてアドバイスをさせてください。Selenide 構文を最大限に活用していないようです。テストを簡素化できます。

System.setProperty("webdriver.chrome.driver",  "Resources/chromedriver.exe");
System.setProperty("selenide.browser", "chrome");

open("http://vanilla.sa/");
List<String> links = new ArrayList<>();
out.println("List of links Available: ");  

for (SelenideElement link : $$("a")) {
  links[i] = link.attr("href");
} 

// navigate to each Link on the webpage
for (String link : links) {
    System.out.println(link);
    open(link);
    sleep(7000); // this is milliseconds!
    $(byText("condition"))
        .shouldNotBe(visible)
        .shouldNotHave(text("condition"));
}
于 2016-03-21T20:15:36.830 に答える