2016-08-23 4 views
2

現在、私はSeleniumでトレーニング中です。 ウェブ要素内のランダムリンクをクリックする方法

  • は、選択したカテゴリ
  • にページのリストからランダムに記事を選択したカテゴリのページのリストからランダムな分野を選び、ランダムなWikipediaのページへ

    1. 移動:タスクの目的はにあります
    2. 元のランダムページのカテゴリと2番目のランダムページのカテゴリの比較した差異を出力します。

    私はカテゴリページに行ってきましたが、何らかの理由でコードがそのページ内でランダムな記事をクリックすることはありません。

    はこちらカテゴリページ

     //Navigating to the category list at the bottom of the page 
         WebElement Category = driver.findElement(By.id("mw-normal-catlinks")); 
         Category.click(); 
         //finds a random link in the category list 
         Random r = new java.util.Random(); 
         List<WebElement> links = driver.findElements(By.xpath("//div[@class = 'mw-category']"));  
         //picks a random link 
         WebElement randomElement = links.get(r.nextInt(links.size())); 
         randomElement.click(); 
    
         WebElement newCategory = driver.findElement(By.xpath("//div[@class= 'mw-category-generated']//div[@class= 'mw-category']")); 
         newCategory.click(); 
         Random n = new java.util.Random(); 
         List<WebElement> ArticleLinks = driver.findElements(By.xpath("//div[@class= 'mw-category-generated']//div[@class= 'mw-category']")); 
         WebElement randomElement2 = articleLinks.get(n.nextInt(articleLinks.size())); 
         randomElement2.click(); 
    
    +0

    ここでは目標と要件がありますが、ここに質問がありますか? – byxor

    +0

    私は "クリック" ingが答えではないことを提案します、あなたはGETメソッドを使用し、URLをナビゲートすることができます:[FOREXAMPLE](https://en.wiktionary.org/wiki/dumbass#Synonyms) – SQLMason

    +0

    @BrandonIbbotsonいいえ本当の疑問。それらのステップを通過するだけです。私の個人的な質問は、私が間違っていることだと思いますか?プログラムがランダムな記事をクリックしないのはなぜですか? –

    答えて

    0

    コードが良いと思われるための私の現在のコードです。なぜそれが動作していないのか分かりません。おそらくrandomElementとrandomElement2でランダムな要素を探していますが、その要素をクリックしています。以下のコード行を追加してください。 randomElement.click() randomElement2.click()

    +0

    上記のコードを追加しました。しかし、それはまだ仕事をしません。 –

    +0

    完全なコードを更新してください – praveen

    +0

    私は元のコードを更新しました。 –

    0

    カップルの問題私はここを参照してください:あなたは、実際のリンクはタグmw-pagesであることを確認してください

    List<WebElement> links = driver.findElements(By.tagName("mw-pages")); 
    

    ていますか?わからない場合は、HTMLを見てください。表示されますか:

    <mw-pages></mw-pages> 
    

    もしそうでなければ、おそらくクラスまたはIDを探しています。その場合、それらのセレクター戦略を使用する必要があります。

    その他の問題:

    By.tagName("//div[@class= 'mw-category-generated']//div[@class= 'mw-category']") 
    

    あなたが指定した文字列をタグ名ではありません。再び、上記のように、By.tagName<tag-name>を探しています。このセレクタの戦略は明確にするXPathですので、あなたのオブジェクトをPascalCasingの習慣をドロップし、

    By.xpath("//div[@class= 'mw-category-generated']//div[@class= 'mw-category']") 
    

    さらにを使用しています。 JavaはPascalCaseではなくラクダです。あなたの問題とは関係ありませんが、助言を受ける価値はあると思います。

    WebElement category; // not WebElement Category; 
    List<WebElement> articleLinks; // not List<WebElement> ArticleLinks; 
    
    +0

    あなたの変更に合わせて元の投稿を更新しました。しかし、私はそれでも記事のリスト内のランダムなリンクをクリックすることはできません。 –

    関連する問題