我试图在网页上找到按钮(预览/编辑),使用此代码根据参数文本(buttonName)单击按钮。
页面的行为{当页面加载时,它会显示您编辑'按钮。如果您点击“修改”,则会显示“预览”字样。按钮,反之亦然}
WebBrowserElement parentElement = waitForElement(By.xpath("//div[@class='serviceHeaderInner']"));
String s = parentElement.toString();
if (s.contains(buttonName) && (parentElement.waitForElement(By.xpath(".//a[.='" + buttonName + "']"))).isDisplayed()) {
WebBrowserElement buttonElement = parentElement.waitForElement(By.xpath(".//a[.='" + buttonName + "']"));
buttonElement.click();
} else {
debugPrintln(" -> Invalid buttonName '"+ buttonName +"'");
}
在测试案例中,我试图通过,
'预览'
'预览'
'编辑'
'编辑'
当页面加载时,会出现“编辑”字样。按钮和传递'预览'在测试用例中两次参数..它直接转到其他等等。另外传递'编辑'论证也转到了其他部分。我猜错了#34;如果"条件。但是为了更有活力,它应该检查包含“禁用”的课程。文本acc。快照,以便在第一点可以防止这个问题。
答案 0 :(得分:0)
将parentElement强制转换为字符串时,为s分配了什么值?而不是在做.toString();
我认为你需要做{
.getAttribute("value");
或.getAttribute("text");
。或者只是.text;
我们可以更改此if语句以使其正常工作。当页面加载或是否有等待时间时,这些按钮会显示吗?
也许我们可以试试这个,让我们不要使用父元素,因为这里似乎不需要。这可以稍微重构一下,但我们先试试吧:
if (findElement(By.xpath("//a[text()='" + buttonName + "']"))).isDisplayed()) {
WebBrowserElement buttonElement = findElement(By.xpath("//a[text()='" + buttonName + "']"));
buttonElement.click();
} else {
debugPrintln(" -> Invalid buttonName '"+ buttonName +"'");
}
答案 1 :(得分:0)
您可以使用以下方法根据名称点击按钮。在此方法上使用try{} catch(){}
来处理按钮不存在时的情况。
// button names can be one of [Edit, Preview]
// Provided you have only one button each on the name of Edit and Preview on your page
public void clickButtonBasedOnName(String buttonName) {
waitForElement(By.linkText(buttonName)).click();
}