web-dev-qa-db-ja.com

要素IDのみを取得する方法-Selenium WebDriver 2の使用

編集:私もこれを試しました

 var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList();

空のテキストが表示されます

私が取得しているリストからIDだけを取得する方法を見つけようとしています。以下は、コードと画面のプリントショットです。

// WebDriverがテキストのリストを取得

以下のコードは正しい数のレコードを返しますが、Textを返すだけですが、特定のTextIdTextの後です

私はこれを試しました:

var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']/tbody/tr/td/span"))).ToList();

この

var webElements2 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']/tbody/tr/td"))).ToList();

この...

var webElements3 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']"))).ToList();

行のすべてのコードは正しいリターンを提供しますが、IDはありません。

これが私のページの印刷画面です:

enter image description here

15
Nick Kahn

以下のメソッドを使用してすべての要素を取得した後、ループで実行してすべての要素のIDを取得します。

List<WebElement> element = driver.findElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input")));

for(WebElement ele:elements)
{

        ele.getAttribute("id");     // for getting id of each element

        ele.getText();              //for getting text of each element

}
21
Santoshsarma

1)私はあなたの問題を解決するために選択するアプローチのアイデアを共有しようとします:

getElementsByTagName('input');//returns array of elements

2)js executor get要素の属性、特にIDを使用して、getElementsByTagName( 'input')によって返された配列全体を反復処理し、それらのIDを取得します。 //色属性を見つけるために使用したコードのサンプル:

public String jsGetColor(String cssSelector){

    JavascriptExecutor js = (JavascriptExecutor) driver;
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("var x=$(\'"+css+"\');");
    stringBuilder.append("return x.css('color')");
    String res= (String) js.executeScript(stringBuilder.toString());
    return res;

}

これは、どのようにして試すことができるかという私の推測です。それが何らかの形であなたを助けることを願っています)

0

IDが1つだけ必要な場合:

String id = driver.findElement(By.xpath("//*[contains(text(), 'Your text')]")).getAttribute("id");
0
user7398648