我正在尝试使用随机名称生成器在网页上创建一个字符,它有ajax的文本链接,当您单击它时会在文本字段中放置新的随机链接
<a href="./ajax_suggestname.php" ajaxcip="true" ajaxcip_target="#charactername" ajaxcip_datatype="Attributes">suggest name</a>
我得到像这样的锚
private HtmlAnchor getAnchorByAttribute(HtmlPage managementPage, String attribute) {
for (HtmlAnchor anchor : managementPage.getAnchors()) {
if (anchor.asText().equals(attribute)) {
return anchor;
}
}
return null;
}
然后我尝试从字段中获取更新的名称
private String getSuggestName(HtmlPage managementPage, HtmlForm form) throws IOException {
HtmlAnchor suggestName = getAnchorByAttribute(managementPage, "suggest name");
suggestName.click();
int tries = 10;
while (tries-- > 0 && form.getInputByName("name").getValueAttribute().isEmpty()) {
synchronized (managementPage) {
try {
managementPage.wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
return form.getInputByName("name").getValueAttribute();
}
生成名称小于秒,但函数始终返回空字符串。 我在锚点上调用的click方法返回如下所示的新页面:
<?xml version="1.0" encoding="ISO-8859-1"?>
<html>
<head/>
<body/>
</html>
虽然我希望它与以前的格式相同,但生成的名称。 有什么想法吗?
答案 0 :(得分:0)
前几天我有类似的问题,我知道你必须等待ajax请求的执行,最好是重试一段时间,直到页面没有更新(使用任何条件)这里是代码的例子(其中适合我)
int input_length = page.getByXPath("//input").size();
int tries = 5;
while (tries > 0 && input_length < 12) { //you can change number of tries and condition according to your need
tries--;
synchronized (page) {
page.wait(2000); //wait
}
input_length = page.getByXPath("//input").size(); //input length is example of condtion
}