0

如何使用 selenium webdriver 使用 Column1 中的特定名称为 webtable 上的不同行单击添加按钮。

网络表是

Row 1|column1| Column2| Add Button
Row 2|column1| Column2| Add Button
Row 3|column1| Column2| Add Button
Row 4|column1| Column2| Add Button

我添加了一些用户,现在我想根据用户的名称单击添加按钮,用户的名称可能会有所不同,所以我想将名称存储在数组列表中,然后根据存储的名称想要单击在添加按钮上输入该特定用户的一些详细信息。

4

2 回答 2

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();
}

看看这里,看看 cssSelector 如何与我的例子一起工作。

PS:如果你想比较 2 个字符串,你必须使用.equals()not==

于 2013-05-21T07:19:59.520 回答
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();
    }
}
于 2013-05-20T11:38:12.813 回答