如何使用selenium webdriver在网表上的不同行中使用Column1中的特定名称单击“添加”按钮。
网表如
Row 1|column1| Column2| Add Button
Row 2|column1| Column2| Add Button
Row 3|column1| Column2| Add Button
Row 4|column1| Column2| Add Button
我添加了一些用户,现在我想点击添加按钮,具体取决于用户名,用户名可能会有所不同,所以我想将名称存储在arraylist中,然后根据存储的名称想要点击添加按钮,为该特定用户输入一些细节。
答案 0 :(得分:0)
抱歉,我对JAVA不够好。但是遵循逻辑将帮助您编写Java代码:
table = driver.find_element(:id, "table_id")
rows = table.find_elements(:tag_name, "tr")
len = rows.length
len.times do |i|
if table.find_element(:xpath, "//tr[#{i+1}]/td[2]/div").text.eql? "expected_text"
table.find_element(:xpath, "//tr[#{i+1}]/td[4]/div").click
end
end
这是一个Java代码(可能在语法上不正确)。试试吧:
WebElement table = driver.findElement(By.id("table_id"));
// WebElement table = driver.findElement(By.xpath("//table[@class="jtable"]")); (for your case)
List<WebElement> rows = table.findElements(By.tagName("tr"));
for(int i=0; i<rows.length(); i++ ){
if(table.findElement(By.xpath("//tr[#{i+1}]/td[2]/div").getText == "expected_text"){
table.findElement(By.xpath("//tr[#{i+1}]/td[4]/div")).click();
}
}
答案 1 :(得分:0)
更简单的方法:
WebElement table = driver.findElement(By.cssSelector("table.jtable"));
List<WebElement> rows = table.findElements(By.tagName("tr"));
for (WebElement row : rows) {
if(row.findElement(By.cssSelector("td:nth-child(2)")).getText().equals("expected name"))
row.findElement(By.cssSelector("td:last-child input")).click();
}
Take a look here to see how cssSelector works with my exemple.
PS:如果你想比较2个字符串,你必须使用.equals()
而不是==