編集:私もこれを試しました
var webElements1 = (Driver.FindElements(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Control1_lstCategory']//input"))).ToList();
空のテキストが表示されます
私が取得しているリストからIDだけを取得する方法を見つけようとしています。以下は、コードと画面のプリントショットです。
// WebDriverがテキストのリストを取得
以下のコードは正しい数のレコードを返しますが、Text
を返すだけですが、特定のText
のId
とText
の後です
私はこれを試しました:
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はありません。
これが私のページの印刷画面です:
以下のメソッドを使用してすべての要素を取得した後、ループで実行してすべての要素の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
}
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;
}
これは、どのようにして試すことができるかという私の推測です。それが何らかの形であなたを助けることを願っています)
IDが1つだけ必要な場合:
String id = driver.findElement(By.xpath("//*[contains(text(), 'Your text')]")).getAttribute("id");