我正在使用selenium,我正在尝试设计一个测试,其中Selenium根据页面行中另一列的值识别我想要访问的顺序。
我正在测试的页面不会以任何稳定的顺序存储记录,我需要点击处于“尚未处理”状态的记录的链接。
在HTML格式化中,有没有办法让Selenium读取所有寻找“尚未处理”状态的行的行,然后单击链接4列以访问该订单页面? (最终目标是进行可以下订单的测试,然后取消它刚刚下的订单。)
答案 0 :(得分:0)
如果下面的内容提供了您想要的内容,请尝试
WebDriver driver = new FirefoxDriver();
By webElementLocatorBy = By.id("your table id");
By webTextLocatorBy = By.id("your coloumn id");
WebElement table = driver.get("your URL").findElement(webElementLocatorBy);
List<WebElement> tableRows = table.findElements(By.tagName("tr"));
for (int row = 0; row < tableRows.size(); row++) {
if ("Not Yet Processed".equals(driver.get("your URL").findElement(webTextLocatorBy)).getText()) {
// do your stuff
}
}
答案 1 :(得分:0)
如果要根据值单击复选框,则必须使用for循环和复选框absolute xpath列出所有值,并传递“i”值。
WebElement table = driver.findElement(By.xpath("//div[@id ='content']/table"));
/*List <WebElement> head = driver.findElements(By.tagName("th"));
head.size();
for (int h=0;h<head.size();h++){*/
List <WebElement> row = driver.findElements(By.tagName("tr"));
row.size();
for (int i=0;i<row.size();i++){
List <WebElement> col = row.get(i).findElements(By.tagName("td"));
col.size();
for (int j=0;j<col.size();j++){
String cv = col.get(j).getText();
// If name is Saudi Arabia, it will click on check box
if(cv.equalsIgnoreCase("Saudi Arabia")){
// Divide the x path where colunm is changing html/body/div[1]/div[5]/div[2]/div/div/table/tbody/tr[pass i value]/td[6]";
String xp1 = "html/body/div[1]/div[5]/div[2]/div/div/table/tbody/tr[";
String xp2 = "]/td[6]";
答案 2 :(得分:0)
您需要检查表中的“尚未处理”,然后单击同一行中某些单元格中的链接。以下代码段选择了在之前带有文本的单元格的字段。可以更改“ 1”以选择更左侧的单元格。请注意,如果xpath搜索字符串的末尾没有出现“ a”,则硒将不会单击链接-即使您使用正确的索引。
link = driver.find_element_by_xpath("//td[contains(text(), "Not Yet Processed")]/preceding-sibling::td[1]/a")
link.click()
如果链接位于表格中文本的右侧,请使用“跟随”而不是“之前”。
最好的问候,
Derrel