2

Web ページのリンクを開きたい。リンクは、タグ内に存在する順序付けられていないリスト内にあるようです。WEBページへのURLはセルフテックドットコムです。タブはホーム、アバウト、セレンです。

を使用してリンクを開こうとしましdriver.findElement(By.linkText("Selenium"));たが、ページのスタイルが失われたようです。xpathメソッドも試しましたが、うまくいきません。うまくいかない理由と、正しく動作するようにコードを修正する方法を教えてください。ご協力いただきありがとうございます。

HTML コード フラグメント:

<body class="custom">
<div id="container">
<div id="page">
<ul class="menu">
<li class="tab tab-home current"><a href="http://selftechy.com">Home</a></li>
<li class="tab tab-1"><a href="http://selftechy.com/about" title="About">About</a></li>
<li class="tab tab-2"><a href="http://selftechy.com/selenium-2" title="Selenium">Selenium</a></li>
</ul>

リンクを開くための webdriver コード

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.*;

import org.junit.Before;
import org.junit.After;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class selftechyTestng 
{
    private WebDriver driver;
    private String baseUrl;

    @Before
    public void setUp() throws Exception
    {
        driver = new FirefoxDriver();
        baseUrl = "http://selftechy.com/";
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }
    @Test
    public void searchElements() throws Exception{
        driver.get(baseUrl);

            //use By.linkText method the page lost its styling
            driver.findElement(By.linkText("Selenium"));

        //use xpath method to open the link doesn't work either 
        List<WebElement> elements = driver.findElements(By.xpath("//div[@id=page]/*[3]")).click(); 
        driver.findElement(By.xpath("//div[@id=page]/*[3]")).click(); 
    }

}
4

4 に答える 4

7

div を検索してから子要素を検索する理由 - 何か特別な理由はありますか? 私には何の利点もありません。確かに、a実際にクリックしたい要素を取得していません。私の意見では、使用するのははるかに簡単です

driver.findElement(By.xpath("//a[@title = 'Selenium']")).click();

あなたのアプローチを使用して、使用する必要があります

driver.findElement(By.xpath("//div[@id = 'page']/ul/li[3]/a")).click(); 
于 2013-05-19T15:34:16.440 に答える
0

次の xpath も使用できます。

"//a[text()='Selenium']"

これにより、テキスト = Selenium のリンクが見つかります

于 2013-05-20T19:05:28.807 に答える
0

以下のコードは、リンクを新しいウィンドウで開き、新しく開いたウィンドウのタイトルと URL を出力します。

    String defaultwindow = "";
@Test(description="Main Page")
public void UserOnMainPage()
{
        driver.get("http://yoururl.com");
        defaultwindow = driver.getWindowHandle();
        String selectAll = Keys.chord(Keys.SHIFT,Keys.RETURN);
        driver.findElement(By.linkText("linkname")).sendKeys(selectAll);
        printTitleandUrlofNewlyOpenedwindow();
}

private void printTitleandUrlofNewlyOpenedwindow() 
{
        Set<String> windowHandles1 = driver.getWindowHandles();
        int size = windowHandles1.size();
        System.out.println(size); 
        for (String string : windowHandles1) 
        {
           driver.switchTo().window(string);

           if(string.equals(defaultwindow))
           {
               System.out.println("On Main Window");
               Reporter.log("On Main Window");
           }
           else
           {
               String title=driver.getTitle();
               System.out.println(title);
               Reporter.log(title);  
               String recipeUrl = driver.getCurrentUrl();
               System.out.println(recipeUrl);     
               Reporter.log(recipeUrl);

           }
       }
       driver.switchTo().window(defaultwindow);
}
于 2013-10-16T12:40:25.503 に答える
0

以下のコードは、リンクを新しいタブで開きます。

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);

于 2013-10-16T12:44:28.523 に答える