我想使用 Selenium 提交包含多个元素的表单。例如:
<form name="something">
<input type="text" name="a">Username</input>
<input type="password" name="b">password</input>
<select name="c" id="c">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="submit" name="submit">submit</input>
</form>
如果我使用 find.Element(By.name) 查找表单元素,如何获取其子元素 a、b 和 c?然后将值输入到这三个元素中然后提交表单?
另一个类似的问题是:如果我得到元素a
,如何获取元素b
and c
是否在同一个表单中,首先填写(或选择)值,然后提交表单?
提前致谢!
您可以使用 xpath 来获取特定元素的所有直接子元素parent/*
.
如果您已经拥有您的form
元素使用findElement()
, 如下:
WebElement formElement = driver.findElement(By.name("something"));
List<WebElement> allFormChildElements = formElement.findElements(By.xpath("*"));
或直接使用:
List<WebElement> allFormChildElements = driver.findElements(By.xpath("//form[@name='something']/*"));
然后查看每个元素的标签和类型来指定其值:
for (WebElement item : allFormChildElements)
{
if (item.getTagName().equals("input"))
{
switch (item.getAttribute("type"))
{
case "text":
//specify text value
break;
case "checkbox":
//check or uncheck
break;
//and so on
}
}
else if (item.getTagName().equals("select"))
{
//select an item from the select list
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)