我的测试网站的登录工作流程如下:
- 使用用户名和密码登录
- 在项目列表中选择一个项目并提交
- 处理所选项目
- 转到“订阅项目”页面
- 订阅另一个项目并保存
醇>
项目列表根据用户的订阅按字母顺序排序。 我的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 "旁边显示的单选选项。
答案 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();