0

GoogleでSeleniumを検索し、リンクのリストをそれぞれクリックして実行し、ページのタイトルを印刷してから戻ってみようとしています。

List<WebElement> linkElements = driver.findElements( **<insert code here>** );

for(WebElement elem: linkElements)
{
    String text = elem.getText();
    driver.findElement(By.linkText(text)).click();
    System.out.println("Title of link\t:\t" + driver.getTitle());
    driver.navigate().back();
}

要素を見つけるために、検索リンクだけでなくすべてのリンクを取得するため、機能しない By.tagName("a") を試しました。Firebug を使用すると、各検索リンクのヘッダー h3 で使用される r のクラスと、その中にネストされた a タグがあることがわかります。

以下を参照してください。

<h3 class="r">
<a href="/url sa=t&amp;rct=j&amp;q=selenium&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CC8QFjAA&amp;url=http%3A%2F%2Fseleniumhq.org%2F&amp;ei=y4eNUYiIGuS7iwL-r4DADA&amp;usg=AFQjCNHCelhj_BWssRX2H0HZCcPqhgBrRg&amp;sig2=WBhmm65gCH7RQxIv9vgrug&amp;bvm=bv.46340616,d.cGE" onmousedown="return rwt(this,'','','','1','AFQjCNHCelhj_BWssRX2H0HZCcPqhgBrRg','WBhmm65gCH7RQxIv9vgrug','0CC8QFjAA','','',event)"><em>Selenium</em> - Web Browser Automation
</a></h3>

これを機能させるためにどのコードを挿入できますか?

4

3 に答える 3

0

新しいコードの下で試してください

    WebDriver driver;
    driver = new FirefoxDriver();
    driver.get("http://www.google.com");
    driver.findElement(By.id("gbqfq")).sendKeys("Selenium");
    Thread.sleep(1500L);
    driver.findElement(By.id("gbqfb")).click();
    Thread.sleep(1500L);
    List<WebElement> linkElements = driver.findElements(By.xpath("//h3[@class='r']/a"));
     for(int i=0;i<=linkElements.size();i++)
        {
            String text = linkElements.get(i).getText();
            driver.findElement(By.linkText(text)).click();
            Thread.sleep(2000L);
            System.out.println("Title of link\t:\t" + driver.getTitle());
            Thread.sleep(2000L);
            driver.navigate().back();
            linkElements = driver.findElements(By.xpath("//h3[@class='r']/a"));

        } 
于 2013-05-11T06:11:11.347 に答える
0

あなたはそれを行うための多くの解決策を持っています。私のものがあります。あなたはあなたのようにあなたの道を保ちます

// You get all links in a list
List<WebElement> linkElements = driver.findElements(By.xpath("//h3/a"));

// for each element(link) you click() on it
for(WebElement elem: linkElements)
{
  elem.click(); 
  // i suggest to put a wait right there
  System.out.println("Title of link\t:\t" + driver.getTitle());
  driver.navigate().back();
}

なぜあなたが複雑にしようとしていたのかわかりませんgetText()

于 2013-05-13T06:57:23.673 に答える
0

このセレクターを検索してみてください:

    '.g:nth-child('+clickPosition+') h3.r a'

ここで、「clickPosition」は SERP 結果の配列キーです。ただし、Google は現在、href 属性をリダイレクトに変更する「onmousedown」イベントを実装しています。

于 2013-11-21T21:29:42.933 に答える