私のコードは以下の通りです。誰かがより良い方法を提案できますか?セレンのwebdriverのダイナミックテーブルからレコードを見つけてクリックする方法
WebElement tasktable = driver.findElement(By.xpath( "/ html/body/div [2]/div [2]/div/div [3]/div/div [2] div/div/div/div/div/div/div/div [3]/div/div [2]/div/div/div/div
List<WebElement> rows=tasktable.findElements(By.tagName("tr"));
System.out.println("Number of rows:"+rows.size());
String sColValue="Test1";
//String sRowValue="Status";
System.out.println("Searching for : "+ sColValue);
for(int rnum=1;rnum<=rows.size();rnum++)
{
String sValue = null;
String rValue=null;
sValue = driver.findElement(By.xpath("html/body/div[2]/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div[3]/div/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div/table/tbody/tr["+rnum+"]/td[2]")).getText();
Thread.sleep(3000);
System.out.println("Name:"+ sValue);
if(sValue.equalsIgnoreCase(sColValue))
{
System.out.println("Found : "+ sValue);
rValue = driver.findElement(By.xpath("html/body/div[2]/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div[3]/div/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div/table/tbody/tr["+rnum+"]/td[2]")).getText();
System.out.println("Status:"+ rValue);
Actions action= new Actions(driver);
action.moveToElement(driver.findElement(By.xpath("html/body/div[2]/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div[3]/div/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div/table/tbody/tr["+rnum+"]/td[2]"))).doubleClick().build().perform();
new Actions(driver).doubleClick(driver.findElement(By.xpath("html/body/div[2]/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div[3]/div/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div/table/tbody/tr["+rnum+"]/td[2]"))).perform();
Thread.sleep(3000);
break;
}
else {
System.out.println("Name:"+ sColValue+ "is not found");
}
あなたは絶対 'XPath'を使用しています。これは良い考えではありません。相対的な 'XPath'を得るために、ターゲット要素の' HTML'を表示してください:)他の柔軟なセレクタ。また、これをチェックする必要がありますhttp://www.w3schools.com/xml/xpath_intro.asp – Andersson
以下は、HTML – Alka