Java 如何使用SeleniumWebDriver处理动态文本(成功和失败文本)

Java 如何使用SeleniumWebDriver处理动态文本(成功和失败文本),java,selenium,selenium-webdriver,webdriver,testng,Java,Selenium,Selenium Webdriver,Webdriver,Testng,我在SeleniumWebDriver脚本中面临一个问题,在我的逻辑中,我想用以下场景验证表单提交 1.Submit form with already register details - Details already exists 2.Submit Form with new details - Successfully added. 现在我的问题是这两条短信都有不同的定位器,如下所示 driver.findElement(By.xpath("//div[@class='alert al

我在SeleniumWebDriver脚本中面临一个问题,在我的逻辑中,我想用以下场景验证表单提交

1.Submit form with already register details - Details already exists
2.Submit Form with new details - Successfully added.
现在我的问题是这两条短信都有不同的定位器,如下所示

driver.findElement(By.xpath("//div[@class='alert alert-success']")).getText();
driver.findElement(By.xpath("//div[@class='alert alert-error']")).getText();
现在我需要java中的selenium代码,因为代码会根据屏幕上的文本自动处理文本,以验证我的测试用例是否通过/失败。请提供如何在网页中编写这种情况

简单地说,我想验证客户是否在系统中注册,如果不是,我应该根据屏幕上的消息在系统中注册


当我同时使用XPath时,它会在系统中查找一个文本,而另一个文本不存在,然后它会给出元素未发现异常,请建议。

如果一条消息存在,另一条消息不存在,那么您会得到
NoTouchElementException
,因为其他消息不存在,这是预期的行为。如果您不希望测试在这种情况下失败,那么应该捕获NoTouchElementException。
您甚至可以尝试使用
driver.findElement(By.xpath(“//div[contains(@class,'alert'])).getText();
并验证您得到的文本,但我不能确定它是否有效,因为我不知道您的页面的行为和外观。

您可以使用或调节
cssSelector
。这将检查两个选项并返回找到的第一个选项

driver.findElement(By.cssSelector(".alert.alert-success, .alert.alert-error")).getText();

您可以将Xpath搜索的结果分配给一个字符串变量,然后从中调整流程。我已经看到,CSS已经给出了一个答案,但只要您的原始帖子引用Xpath,这里就是Xpath解决方案:

String isformalreadysubmited=driver.findElement(By.xpath(“//div[@class='alert-alert-error'或@class='alert-alert-success']))。getText()

从这一点开始,您可以使用一个简单的if语句来引导流程:

if(isFormAlreadySubmitted.equals("Details already exist"){
System.out.println("Form already submitted!");
}
else if(isFormAlreadySubmitted.equals("Successfully added"){
System.out.println("Successfully added a new record!");
}
else{
System.out.println("Something went wrong! Couldn't get alert text, is alert present?");
}

也许你应该使用
try
/
catch
?非常好的答案,谢谢你宝贵的时间和对我问题的回答。非常感谢。你也可以让选择器为
。如果它返回你想要的元素,就提醒它,而不使用
语法。@freester先生,可能吧,不过我不熟悉sit所以我在使用OP提供的定位器。