突出显示元素未出现在屏幕截图中?。请
Highlight element does not appear in screenshot?. Please
我正在尝试通过屏幕截图捕获带有高亮显示的元素,但在屏幕截图中此元素没有高亮显示。有人知道解决方案吗?当我捕获文本时突出显示:automatitests@gmail.com
查看我的代码:
Utility.captureScreenShot(driver, "Verifica Nome_Email");
WebElement taketext1= driver.findElement(By.xpath("//*[@id=\"gb\"]/div[2]/div[3]/div[1]/div[2]/div/a/img"));
Helper.highLightElement(driver, taketext1);
driver.findElement(By.xpath("//*[@id=\"gb\"]/div[2]/div[3]/div[1]/div[2]/div/a/img")).click();
Thread.sleep(2000);
WebElement taketext= driver.findElement(By.className("gb_tb"));
Helper.highLightElement(driver, taketext);
Thread.sleep(2000);
Utility.captureScreenShot(driver, "Verifica Nome_Email");
String emailatual = taketext.getText();
assertTrue(emailatual.contains("automatests@gmail.com"));
driver.findElement(By.id("gb_71")).click();
driver.close();
方法
public class 助手 {
public static void highLightElement(WebDriver driver, WebElement element)
{
JavascriptExecutor js=(JavascriptExecutor)driver;
//js.executeScript("arguments[0].setAttribute('style', 'background: transparent; border: 2px solid red;');", element);
js.executeScript("arguments[0].style.border='2px solid red'", element);
try
{
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.out.println(e.getMessage());
}
js.executeScript("arguments[0].setAttribute('style','border: solid 2px white');", element);
}
}
enter image description here
我使用了 java.awt 包中的机器人 class 来捕获屏幕截图。您可以使用以下代码替换您的 highLightElement 方法:
public static void highlightAndCapture(WebDriver driver, WebElement elem)
throws IOException, HeadlessException, AWTException {
if (driver instanceof JavascriptExecutor) {
// To highlight the element
((JavascriptExecutor) driver).executeScript("arguments[0].style.border='2px solid red'", elem);
// To capture screenshot
BufferedImage image = new Robot()
.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", new File("screenshot.png"));
// To remove border from highlighted element(Optional)
((JavascriptExecutor) driver).executeScript("arguments[0].style.border = \"none\";", elem);
}
}
我正在尝试通过屏幕截图捕获带有高亮显示的元素,但在屏幕截图中此元素没有高亮显示。有人知道解决方案吗?当我捕获文本时突出显示:automatitests@gmail.com
查看我的代码:
Utility.captureScreenShot(driver, "Verifica Nome_Email");
WebElement taketext1= driver.findElement(By.xpath("//*[@id=\"gb\"]/div[2]/div[3]/div[1]/div[2]/div/a/img"));
Helper.highLightElement(driver, taketext1);
driver.findElement(By.xpath("//*[@id=\"gb\"]/div[2]/div[3]/div[1]/div[2]/div/a/img")).click();
Thread.sleep(2000);
WebElement taketext= driver.findElement(By.className("gb_tb"));
Helper.highLightElement(driver, taketext);
Thread.sleep(2000);
Utility.captureScreenShot(driver, "Verifica Nome_Email");
String emailatual = taketext.getText();
assertTrue(emailatual.contains("automatests@gmail.com"));
driver.findElement(By.id("gb_71")).click();
driver.close();
方法 public class 助手 {
public static void highLightElement(WebDriver driver, WebElement element)
{
JavascriptExecutor js=(JavascriptExecutor)driver;
//js.executeScript("arguments[0].setAttribute('style', 'background: transparent; border: 2px solid red;');", element);
js.executeScript("arguments[0].style.border='2px solid red'", element);
try
{
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.out.println(e.getMessage());
}
js.executeScript("arguments[0].setAttribute('style','border: solid 2px white');", element);
}
} enter image description here
我使用了 java.awt 包中的机器人 class 来捕获屏幕截图。您可以使用以下代码替换您的 highLightElement 方法:
public static void highlightAndCapture(WebDriver driver, WebElement elem)
throws IOException, HeadlessException, AWTException {
if (driver instanceof JavascriptExecutor) {
// To highlight the element
((JavascriptExecutor) driver).executeScript("arguments[0].style.border='2px solid red'", elem);
// To capture screenshot
BufferedImage image = new Robot()
.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", new File("screenshot.png"));
// To remove border from highlighted element(Optional)
((JavascriptExecutor) driver).executeScript("arguments[0].style.border = \"none\";", elem);
}
}