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

Kar*_*rry 0 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"))

}
Run Code Online (Sandbox Code Playgroud)

还尝试使用CSS选择器和XPath,但是它仍然没有找到,因为它没有找到相同的类名input class.

for循环下我试着做

formrow.getText()
Run Code Online (Sandbox Code Playgroud)

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

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>
Run Code Online (Sandbox Code Playgroud)

eug*_*kov 5

因为你有以下代码:

<div class="formfield">
    <label>
    <input class="Test_type required" type="radio"/>
      YouareTest
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

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

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

      input.Test_type.required
    
    Run Code Online (Sandbox Code Playgroud)

但是你也可以注意到你有另一个元素 - div with class attribute = formfieldas parent element.因此,在结构中使用CSS将子元素定位到父元素,如:

 <parent class="zz">
     <child 1>
        <child2> abaracadabra</child>
     </child 1>
    </parent>
Run Code Online (Sandbox Code Playgroud)

parent.zz child2 =>这样

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

WebElement inputt=driver.findElement(By.cssSelector('div.formfield input.Test_type.required'));
Run Code Online (Sandbox Code Playgroud)

请尝试这个,并告诉它是否适合您.