如何使用Selenium WebDriver检索属性的值?

时间:2015-02-20 05:17:00

标签: selenium selenium-webdriver


enter image description here附加了HTML代码,我不想使用硬代码xpath,要求是将其设为通用代码:

<td bgcolor="#FFFFFF">
  <input name="hotel_name_0" id="hotel_name_0" type="text" value="Hotel Creek" class="select_text" onfocus="disable_ctrlV()" onkeypress="return Nothingonly(event)">
</td>

代码:

public static boolean fncVerifyTextInColumn(WebElement gridObjWebElement,
            String stringToValidate, int columnNumber,String colName) {
        boolean flagTextinColumn=false;
        ArrayList<WebElement> objRows;
        ArrayList<WebElement> objCols;
        ArrayList<WebElement> childElement;
        objRows=(ArrayList<WebElement>)gridObjWebElement.findElements(By.tagName("tr"));
        objCols=(ArrayList<WebElement>)objRows.get(0).findElements(By.tagName("td"));
        if(objCols.get(columnNumber).getText().equalsIgnoreCase(colName)){
            for(int index=1;index<objRows.size();index++){
                objCols=(ArrayList<WebElement>)objRows.get(index).findElements(By.tagName("td"));
                childElement=(ArrayList<WebElement>)objCols.get(columnNumber).findElements(By.xpath("//input"));
                System.out.println(childElement.get(0).getAttribute("value"));
                if(stringToValidate.trim().equalsIgnoreCase(childElement.get(0).getAttribute("value").trim())){
                    flagTextinColumn=true;
                }
            }
        }
        return flagTextinColumn;
    }

方法调用:

fncVerifyTextInColumn(objGrid,hotels,1,"Hotel Name");

3 个答案:

答案 0 :(得分:2)

我会使用cssSelector [id^='hotel_name_']来定位元素,然后getAttribute()检索属性值

By css = By.cssSelector("[id^='hotel_name_']");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(css));
System.out.println(myDynamicElement.getAttribute("value"));

请注意此处regex cssSelector搜索^。使用hotel_name_someNumber我正在跳过任何动态数字。希望这是页面上{{1}}唯一的元素。

答案 1 :(得分:0)

只做

String attValue = driver.findElement(byAnyMethod).getAttribute("AttributeName");

希望有所帮助

答案 2 :(得分:0)

我认为你在寻找的是这个。 (我假设你知道如何编码,你只需要一个大方向,所以我将省略特定的代码。)

首先,找到td所在的表。您可能需要为此使用xPath,或者您需要为表分配ID,以便找到它。

然后,一旦你有了表,就做一个FindElements来获取它下面的TR列表。

一旦你有了TR,你可以循环遍历它们,抓住它下面的TD并在你想要的INPUT索引处获取TD,得到INPUT然后得到它的值。

是的,很多步骤。

快捷方式可能是使用唯一类对您想要值的所有输入进行分类,并通过className执行FindElements并循环遍历该列表。