通过selenium在表格中选择动态选项

时间:2017-12-16 16:12:26

标签: java selenium testing automation

我的测试网站的登录工作流程如下:

  
      
  1. 使用用户名和密码登录
  2.   
  3. 在项目列表中选择一个项目并提交
  4.   
  5. 处理所选项目
  6.   
  7. 转到“订阅项目”页面
  8.   
  9. 订阅另一个项目并保存
  10.   

项目列表根据用户的订阅按字母顺序排序。 我的Selenium代码就像下面的代码一样完美,直到我订阅另一个选项。我所需选项(选项3)的顺序会按字母顺序排列。

package mypackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class MyClass {

    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();
        //To wait until the element get visible or invisible.
        WebDriverWait wait = new WebDriverWait(driver, 25);
        driver.get("https://arunelias.in/testing/randomoption.php");  
        //For wait until the element get visible.
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("gvItemListing_grdSelect_0")));
        //Select Option 3 displayed and submit
        driver.findElement(By.id("gvItemListing_grdSelect_3")).click();
        driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();
    }

}

我创建了一个模拟项目列表的示例页面https://arunelias.in/testing/randomoption.php

  
      
  • 我想从表中选择一个选项(比如选项3)。
  •   
  • 我如何能够在哪一行找到我所需的选项?
  •   
  • 如何选择" 选项3 "旁边显示的单选选项。
  •   

2 个答案:

答案 0 :(得分:0)

以下是完整示例,说明如何根据收音机选项旁边的文字选择电台选项。

driver.get("https://arunelias.in/testing/randomoption.php");    


WebElement allItems = driver.findElement(By.id("gvItemListing"));


List<WebElement> tableId = allItems.findElements(By.tagName("td"));


String optionString = "Option 3"; 

for(int i = 1 ; i< tableId.size() ; i=i+2){

    if(tableId.get(i).getText().equalsIgnoreCase(optionString) ){
        tableId.get(i-1).click();
        break;
    }

}

点击 Option 3 的单选按钮。如果您想检查任何其他选项,只需将选项名称加入

String optionString = "Your option name";

希望它能解决你的问题。

答案 1 :(得分:0)

要点击 radio button ,文字为 Option 3 ,您可以使用以下代码块:

driver.get("https://arunelias.in/testing/randomoption.php");    
List<WebElement> options = driver.findElements(By.xpath("//table[@id='gvItemListing']/tbody/tr//td[.='Option']"));
for(WebElement option:options)
    if(option.getAttribute("innerHTML").equalsIgnoreCase("Option 3") )
        option.findElement(By.xpath("//self//preceding::input[2]")).click();