我正在尝试使用Selenium Webdriver按类名查找输入元素

时间:2014-08-11 12:29:54

标签: selenium

如何找到元素input class="Test_type"?我成功地通过id=Test1但未能通过input class="Test_type"

找到元素

我试过了:

WebElement mainform = driver.findElement(By.className("mainform"));

List<WebElement> postadchildone2 = mainform.findElements(By.className("formrow"))

for(WebElement formrow: postadchildone2)
{
    WebElement formfield = formrow.findElement(By.className("formfield"));
    WebElement inputclass = formfield.findElement(By.className("Test_type"))

}

还尝试使用CSS选择器&amp; XPath,但它仍然没有找到,因为同一个类名,它没有找到input class

for循环下,我尝试了

formrow.getText()

它显示所有文本结果,但它没有取类名?我被困了请求帮助

HTML:

<div class="mainform">
  <div class="formrow">
    <div class="formrow">
      <div class="formrow">
        <div class="formfield">
          <div id="Test1" class="city_select">
            <div class="blank1"/>
            <div class="formrow " style="margin-left:10px;">
              <div class="formrow">
                <div class="formlabel">
                   <strong>You Are</strong>
                </div>
                <div class="formfield">
                  <label>
                    <input class="Test_type required" type="radio"/>
                    YouareTest
                  </label>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:5)

因为您有以下代码:

<div class="formfield">
    <label>
    <input class="Test_type required" type="radio"/>
      YouareTest
    </label>
</div>

我们需要以某种方式概述输入元素。 所以我建议使用CSS选择器找到这个元素,因为这是最快的方法。 因此'input'标记具有以下类属性= "Test_type required",这意味着对此元素应用了2个CSS类:

  • Test_type
  • 需要 当使用CSS选择器元素定位时,具有类属性y的元素B将被标记为B.y,具有2个类属性y和z的元素将被标记为B.y.z。 所以就我们的任务来说,它看起来像

      input.Test_type.required
    

但是你也可以注意到你有另一个元素 - div,class attribute = formfield作为父元素。 因此,要在子结构中将子元素定位到父元素,如:

 <parent class="zz">
     <child 1>
        <child2> abaracadabra</child>
     </child 1>
    </parent>

parent.zz child2 =&gt;以这种方式

所以选择器的第二部分如下: div.formfield因为它是与输入相关的父选择器。 所以解决方案组合=

WebElement inputt=driver.findElement(By.cssSelector('div.formfield input.Test_type.required'));

请尝试这个,告诉它是否适合你。

答案 1 :(得分:1)

由于您尝试仅使用部分类名称进行提取,请尝试使用以下代码

WebElement inputclass = formfield.findElement(By.CssSelector("Input[class*='Test_type'"))