如何使用Selenium Web驱动程序获取具有下一个div值的Label Name?

时间:2016-05-24 03:55:39

标签: selenium-webdriver

考虑以下代码段

<div class="contentInput medium wrapText">
<label class="ng-binding">Number1</label>
<div title="10000" class="readOnlyInput clearB wrapText  text-left ng-binding">10000</div>
</div>
<div class="contentInput medium wrapText">
<label class="ng-binding">Number2</label>
<div title="10050" class="readOnlyInput clearB wrapText  text-left ng-binding">10050</div>
</div>
<div class="contentInput medium wrapText">
<label class="ng-binding">Number2</label>
<div class="readOnlyInput clearB wrapText  text-left ng-binding">....</div>
</div>

以下是我的问题:

  1. 如何获得下一个div值的标签?例如,我需要将Number1值作为10000,将Number2值作为10050,将Number 3作为BLANK。
  2. 如果我将Label作为输入,那么它的值应该从该标签的下一个div返回?
    例如,如果数字1作为输入给出,则应返回10000值

3 个答案:

答案 0 :(得分:1)

请尝试以下代码:

public string getLabelValue(String labelText)
{
   List <WebElement> outerDiv= driver.findElements(By.xpath("//div[@class='contentInput medium wrapText']"));
    for (WebElement div: outerDiv) {
      if(div.findElements(By.tagName("label").getText().equals(labelText))){
            return div.findElements(By.tagName("div").getText();
      }
    }
   return "Label Not Found".
}

答案 1 :(得分:1)

它应该非常简单如下:

String labelText = driver.findElement(By.xpath("//div[label = 'Number1']/div")).getText();

您甚至可能不需要方法,因为它只是一行。如果您想要其他标签的div值,例如Number2,只需替换该值。

使用xpath的方式使其更简单。

答案 2 :(得分:0)

嗨,请尝试如下

// taking under consideration that we have same number of label 
// tag with its corresponding div tag

// Take label tag and div tag in list 
List<WebElement> myLabels = driver.findElements(By.cssSelector(".ng-binding"));
List<WebElement> myDivs = driver.findElements(By.cssSelector(".readOnlyInput.clearB.wrapText.text-left.ng-binding"));
String UserInputLabelValue = "Number2";
// now size of myLabels = myDivs hence
for(int i=0;i<myLabels.size();i++){
    if(myLabels.get(i).getText().equals(UserInputLabelValue)){
    System.out.println("Div value is against " + UserInputLabelValue + " is : " + myDivs.get(i).getText());
            }
        }