我目前正在做一个java/selenium项目(由另一个开发人员编写),在这个项目中,我们循环遍历Excel表格中的元素及其属性,并根据条件执行一个操作(单击、鼠标悬停等)。有一个按钮元素,当点击时,它被禁用,在执行时显示不同的文本,然后保持禁用,但一旦数据加载到网页,按钮文本返回到原始状态,同时保持禁用。请参阅下面的快照,在单击之前,单击并等待数据加载之后,以及数据加载之后沿着元素的xpath:
之前:
等待时:
加载数据并完成处理后:
我下面的代码用于基于webElementType执行必要的操作,因为这是一个按钮。我想是能够等到这个按钮说“应用过滤器”,仍然有禁用属性。如何使用Java和Selenium来实现这一点?请参阅下面的代码,其中click(element)被调用,我正在等待这个特定的场景:
public void performAction() throws Throwable {
List<Locator> allLocators = this.eachWebElement.getAllPossibleLocators();
String webElementType = this.eachWebElement.getElementType();
String logText = "";
try {
WebElement element = getSuitableWebElement(allLocators);
List<WebElement> allElements = getSuitableWebElements(allLocators);
if (webElementType.equalsIgnoreCase("textBox")) {
logText = "to enter " + this.eachWebElement.getInputValue() + " in "
+ this.eachWebElement.getElementName() + " ";
// System.out.println("TEXT BOX - Execute Step : " + this.eachWebElement.getElementName());
enterText(element, this.eachWebElement.getInputValue().trim());
// ExtentCustom.eachTest.log(Status.PASS, MarkupHelper.createLabel(logText, ExtentColor.GREEN));
ExtentCustom.eachTest.pass(MarkupHelper.createLabel(logText, ExtentColor.GREEN));
} else if ("radiobuttoncheckboxbuttonlink".contains(webElementType.toLowerCase())) {
logText = "to click on " + this.eachWebElement.getElementName() + " ";
// click(getSuitableWebElement(allLocators));
click(element);
// ExtentCustom.eachTest.log(Status.PASS, MarkupHelper.createLabel(logText, ExtentColor.GREEN));
ExtentCustom.eachTest.pass(MarkupHelper.createLabel(logText, ExtentColor.GREEN));
} else if (webElementType.equalsIgnoreCase("movemouse")) {
logText = " mouse is moved to " + this.eachWebElement.getElementName();
// moveMouse(getSuitableWebElement(allLocators));
// System.out.println(" mouse is moved to ");
moveMouse(element);
// ExtentCustom.eachTest.log(Status.PASS, MarkupHelper.createLabel(logText, ExtentColor.GREEN));
ExtentCustom.eachTest.pass(MarkupHelper.createLabel(logText, ExtentColor.GREEN));
} else if (webElementType.equalsIgnoreCase("fileupload")) {
logText = " file is uploaded to " + this.eachWebElement.getElementName();
// moveMouse(getSuitableWebElement(allLocators));
// System.out.println(" fileupload code " + this.eachWebElement.getInputValue());
// System.out.println(allLocators);
uploadFile(element, this.eachWebElement.getInputValue());
// ExtentCustom.eachTest.log(Status.PASS, MarkupHelper.createLabel(logText, ExtentColor.GREEN));
ExtentCustom.eachTest.pass(MarkupHelper.createLabel(logText, ExtentColor.GREEN));
} else {
boolean selectedStatus = selectFromDropdown(allElements, this.eachWebElement.getInputValue().trim());
Assert.assertTrue(selectedStatus, this.eachWebElement.getInputValue().trim() + " not able to select, might be element value to select is wrong");
logText = "value " + eachWebElement.getInputValue().trim() + " got selected from the dropdown : "
+ this.eachWebElement.getElementName();
// ExtentCustom.eachTest.log(Status.PASS, MarkupHelper.createLabel(logText, ExtentColor.GREEN));
ExtentCustom.eachTest.pass(MarkupHelper.createLabel(logText, ExtentColor.GREEN));
}
} catch (Throwable t) {
throw t;
} finally {
// ExtentCustom.logResult(reportStatusLogger, logText);
}
}
1条答案
按热度按时间zmeyuzjn1#
这可能不是最终的解决方案。请记住,我没有工作的用户界面太多看。我会根据你的回答来帮助你。
据我所知我们需要
1.等待“应用筛选器”更改为“搜索产品...”。
1.然后等待“搜索产品...”变为不可见(可选)
1.然后等待“应用过滤器”再次出现。
请让我知道如果有任何问题发生。