我正在尝试使用流动选项将元素ID设置为GWT复选框,它们都没有将id分配给ckeckbox但是包装了span元素。
DOM.setElementAttribute(testCheckbox.getElement(), "id", "testCheckboxId");
或
testCheckbox.getElement().setId("testCheckboxId");
编译的HTML看起来像:
<span id="testCheckboxId" class="gwt-CheckBox">
<input id="gwt-uid-328" type="checkbox" value="1" tabindex="0" checked="">
<label for="gwt-uid-328"></label>
</span>
答案 0 :(得分:2)
首先,你不应该更改CheckBox的输入元素的id
。正如您所见,label
元素在id
属性中使用了此for
。
您可以获取并使用GWT设置的id
:
((Element)(testCheckbox.getElement().getFirstChild())).getId()
-- or --
testCheckbox.getElement().getElementsByTagName("input").getItem(0).getId()
你也可以这样设置id
,但我不建议这样做:
((Element)(testCheckbox.getElement().getFirstChild())).setId("xxxxxx");
-- or --
testCheckbox.getElement().getElementsByTagName("input").getItem(0).setId("xxxxxx");
如果您需要更改id
,还应更改for
元素中的label
属性:
((LabelElement)(testCheckbox.getElement().getLastChild())).setHtmlFor("xxxxxx");
-- or --
((LabelElement)(testCheckbox.getElement().getElementsByTagName("label").getItem(0))).setHtmlFor("xxxxxx");
答案 1 :(得分:0)
您正在设置元素ID。
即使它将id设置为span标记,您也可以将它与selenium webdriver一起使用。您必须使用以下方法来定位它。
webdriver.findElement(By.xpath, <xpath>)
工作正常。
同样,对于文本框,您可以使用xpath找到元素,并使用“sendKeys()”方法传递值。