Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Ant Design中获取成功警报消息的文本,并使用Selenium进行验证_Java_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

Java 在Ant Design中获取成功警报消息的文本,并使用Selenium进行验证

Java 在Ant Design中获取成功警报消息的文本,并使用Selenium进行验证,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,在我的一个项目中,我必须使用Selenium验证成功警报文本。UI是按照Ant设计在react JS中编码的。如需验证,请点击此链接并单击显示正常消息。消息显示在页面顶部,但我无法使用核心Java中的SeleniumWebDriver编码从中获取文本。请帮忙 我尝试了以下代码: driver.findElement(By.cssSelector(".ant-btn-primary")).click(); WebDriverWait wait = new WebDriver

在我的一个项目中,我必须使用Selenium验证成功警报文本。UI是按照Ant设计在react JS中编码的。如需验证,请点击此链接并单击显示正常消息。消息显示在页面顶部,但我无法使用核心Java中的SeleniumWebDriver编码从中获取文本。请帮忙

我尝试了以下代码:

driver.findElement(By.cssSelector(".ant-btn-primary")).click();
            WebDriverWait wait = new WebDriverWait(driver, 60);
            WebElement successmessage = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ant-message-custom-content-ant-message-success")));
            successmessage.getText();

我建议:

driver.findElement(By.cssSelector(".ant-btn-primary")).click();
WebDriverWait wait = new WebDriverWait(driver, 15, 100);
String successMessage = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".ant-message-info > span"))).getText();
您遇到的主要问题是消息不会持续很长时间,因此您需要在数据被销毁之前快速从中取出数据。因此,我内联了getText调用,以便在找到元素后立即调用它

我怀疑你的部分问题是找一个准确的定位器。通过打开chrome开发控制台,选择创建通知消息的父元素,然后右键单击该元素并选择break on->subtree modifications,您可以简化此操作。这将允许您通过在消息创建时暂停JavaScript执行来查看DOM的中间状态。这使得了解正在发生的事情和查找相关定位器变得更加容易。

要提取文本,这是一条普通的消息,您需要诱导WebDriverWait以确保找到的元素的可见性,您可以使用以下任一方法:

CSS选择器:

xpath:

控制台输出:

This is a normal message

最简单的方法是拥有一个隐藏的div,并在成功时将div值更改为true。这可以通过硒获得。请详细说明。我没有完全理解。有这样的输入。显示成功消息时,执行$success.val'true';。现在,使用selenium获取输入标记中的值。但是,在selenium代码中将其放在哪里呢?我很困惑,不要放硒。把它放在htmlNot工作。找不到元素exception.org.openqa.selenium.NoSuchElementException:找不到元素:/div/div/div/span我已尝试在上运行它https://ant.design/components/message/ 很好,我收到了打印文本,这是正常的信息。我不明白locator/div/div/div/span是从哪里来的,你能告诉我你是如何得到这个xpath“//*[@class='ant-message']]”的吗?xpath在单击“显示普通消息”按钮后出现。在您单击它之前,xpath对于您要查找定位器的web帖子还不可用
driver.get("https://ant.design/components/message/");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.ant-btn.ant-btn-primary"))).click();
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.ant-message"))).getText());
driver.get("https://ant.design/components/message/");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='ant-btn ant-btn-primary']"))).click();
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='ant-message']"))).getText());
This is a normal message