【发布时间】:2021-08-14 13:26:47
【问题描述】:
我有一个问题文本字段。当我点击它display:none for h3 出现并且输入标签消失。然后我可以清除字段并输入新名称。
<td style="width:92%;">
<h3 id="question_text_1846" onclick="return onClickQuestion(1846,'text');">test name</h3>
<input type="text" id="question_text_input_1846" onkeypress="return OnKeyPress(event, 1846,'text');" name="question_text_input_1846" onblur="return onBlurQuestion(1846,'text');" placeholder="Question Text" value="test" class="form-control myInput" style="display:none;" />
<script type="text/javascript">
$("#question_text_1846").html(unescape($("#question_text_1846").html()));
</script>
</td>
问题是如何通过 selenium 设置新名称(清除字段和发送键),并且可能是 javascript 操作。我尝试了几种方法,但都不起作用。
element = driver.findElement(By.xpath("//h3[@id='question_text_"+ExtractQuestionTextInputID()+"']"));
actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();
element.click();
element = driver.findElement(By.xpath("//input[@id='question_text_input_"+ExtractQuestionTextInputID()+"']"));
element.clear();
element.sendKeys("test_question_one");
还有js
String qtid = "question_text_" + ExtractQuestionTextInputID();
String qtiid = "question_text_input_" + ExtractQuestionTextInputID();
js.executeScript("document.getElementById("+qtid+").setAttribute('style', 'display: none;')");
js.executeScript("document.getElementById("+qtiid+").setAttribute('style', '')");
这是从标签属性中提取id的方法
public String ExtractQuestionTextInputID(){
String question_text_input_id = driver.findElement(By.xpath("//input[@value='New Question']")).getAttribute("id");
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(question_text_input_id);
String mid = new String();
while(m.find()) {
//System.out.println(m.group());
mid = m.group();
}
return mid;
}
【问题讨论】:
-
您是否尝试过在点击和查找输入元素之间等待
-
@MithileshIndurkar 是的,我尝试了 WebDriverWait(driver, 3),但没有成功
标签: javascript java selenium