如何找到元素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>
答案 0 :(得分:5)
因为您有以下代码:
<div class="formfield">
<label>
<input class="Test_type required" type="radio"/>
YouareTest
</label>
</div>
我们需要以某种方式概述输入元素。
所以我建议使用CSS选择器找到这个元素,因为这是最快的方法。
因此'input'
标记具有以下类属性= "Test_type required"
,这意味着对此元素应用了2个CSS类:
需要
当使用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'"))