7

Selenium Webdriver でリンクを選択するにはどうすればよいですか?

以前のセレンは、次のように実行されます。

    selenium.click("link=Users");

しかし、どうすればwebdriverで同じことができますか?

私は考えました

    driver.findElement(By.partialLinkText("Users")).click();

しかし、これは機能しません。リンクはクリックされません!

<html>
<body>
<div id="mainpage" class="mainpage">
<div id="pageid" class="pageid">
<div id="body">

<table>
<tbody>
<tr>
<td>
<table>
<tbody>
<tr>
<td>
<div id="id_menu" class="mymenu">
<ul>
<li class="li_class ">
<a href="/user.xhtml">Users</a>

スタックトレース:

    org.openqa.selenium.NoSuchElementException: Unable to locate element: 
{"method":"partial link text","selector":"Users"} Command duration or timeout: 11.36 
seconds For documentation on this error, please visit: http://seleniumhq.org/exceptions
/no_such_element.html Build info: version: '2.24.1', revision: '17205', time: '2012-06-19 
17:28:14' System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', 
java.version: '1.7.0_02' Driver info: driver.version: RemoteWebDriver Session ID: 
178449d1-4ff3-44f3-b35c-6a158db7c430 error at line: 34
4

9 に答える 9

8

これはうまくいくはずです:

driver.findElement(By.LinkText("Users")).click();

LinkTextで可能

于 2012-08-23T12:08:08.970 に答える
7

XPath は、要素を指す最も正確な方法の 1 つです。

これを試して:

driver.findElement(By.XPath("//li[@class='li_class']/a")).Click();
于 2012-08-23T23:54:26.693 に答える
1

クリストフに同意します - リンクテキストは機能するはずです。しかし、私はいつも私のために働く別のアプローチに従います.

検索または選択する必要があるすべての要素に id を付けます (CSS がなくても表示に違いはありません)。これにより、テスト ケースが読みやすくなり、一般的な関数を記述できるようになり、コードの保守性が向上します。動的に生成されたコードまたは id を使用できない場所に対してのみ、別のアプローチを使用します。

于 2012-08-24T06:30:47.997 に答える
0

私の場合、フォーム取得クリックが原因で、chromedriver はリンクをクリックできませんでした。以下を使用してこれを修正できました。

if(driver.toString().contains("chrome")) {
        WebElement form=driver.findElement(By.id("form_id"));
            ((JavascriptExecutor)driver)
            .executeScript("arguments[0].setAttribute('style', 'display: block;')", form); //here I change visibility of element
    }
于 2015-02-20T15:31:13.000 に答える
0

私はこれがうまくいくと思います:

driver.findElement(By.xpath("//a[@href='/user.xhtml']")).click();
于 2012-08-23T12:34:58.643 に答える
0

PHP Webdriverを使用して同様の問題が発生しました。LinkText または partialLinkText は機能していませんでしたが、検索用に提供されたテキストは SOURCE コードでこれと同じでした。(リンクテキストだったとしましょう:「ユーザー」)

他のどこでも機能していたのに、なぜ機能しないのか頭を悩ませていました。それから私は違いを見ました。実際にはソースコードのリンクテキストはUsersでしたが、表示ではcssのtext-transformで小文字に変更されたため、「users」と表示されていました。検索条件を Users から users に変更すると、うまくいきました。

覚えておいてください-webdriverは実際に表示されるデータで動作します。大文字と小文字が区別されるとは思いもしませんでした! しかし、それは実際に機能し、私の問題を解決しました。乾杯!

于 2015-05-25T17:07:35.237 に答える
-2

これを試してください:

package mypack;
import java.util.List;

import org.openqa.selenium.By;

import mypackage.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

@SuppressWarnings("unused")
public class classnew {

    private static FirefoxDriver driver;

    public static void main(String[] args) {
        //String baseUrl = "http://newtours.demoaut.com/";
      FirefoxDriver Firefoxdriver = new FirefoxDriver();

        driver = null;
        driver.get("http://newtours.demoaut.com");

        String linkText1 = driver.findElement(By.partialLinkText("egis")).getText();
        System.out.println(linkText1);
        String linkText2 = driver.findElement(By.partialLinkText("EGIS")).getText();
        System.out.println(linkText1);  
        driver.quit();
    }
}
于 2015-03-12T07:28:51.423 に答える