用Selenium突出显示WebElement并恢复原始边界
Highlighting WebElement with Selenium and restoring original border?
我偶然发现了这个SO答案https://stackoverflow.com/a/10660734/2985796并且我试图弄清楚CCD_ 1和CCD_。
我觉得这篇文章对熟悉JS的人来说是有意义的,但遗憾的是,我从来没有对它感到不舒服。我想做的基本上是重新创建这个答案,但考虑到我的应用程序。我所做的是扩展Selenium的FirefoxDriver
以覆盖FindElement
函数。在新函数中,一个找到的WebElement
将被突出显示并记住。当再次调用函数时,记忆元素的边界设置为none
。正如答案所指出的,它删除了原始边界。我希望在高亮显示完成后保留原始边框。
这是我到目前为止的FirefoxDriverEx
级
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class FirefoxDriverEx extends FirefoxDriver
{
private WebElement LastHighlightedElement = null;
private static final String HIGHLIGHT_BOARDER_JS = "arguments[0].style.border='3px solid red'";
private static final String UNHIGHLIGHT_BOARDER_JS = "arguments[0].style.border='none'";
@Override
public WebElement findElement(By by)
{
UndoHighlight();
WebElement foundElement = super.findElement(by);
if (this instanceof JavascriptExecutor)
{
((JavascriptExecutor)this).executeScript(HIGHLIGHT_BOARDER_JS, foundElement);
LastHighlightedElement = foundElement;
}
return foundElement;
}
private void UndoHighlight()
{
if(LastHighlightedElement != null)
{
try
{
if (this instanceof JavascriptExecutor)
((JavascriptExecutor)this).executeScript(UNHIGHLIGHT_BOARDER_JS, LastHighlightedElement);
LastHighlightedElement = null;
}
catch(Exception ex) { }
}
}
}
我想做的是创建一个函数GetElementBorder
,当传递时,WebElement
返回一个代表其当前边界的SCRIPT_GET_ELEMENT_BORDER
0。然后按以下方式使用。
public class FirefoxDriverEx extends FirefoxDriver
{
private String LastElementBorder = null;
private WebElement LastHighlightedElement = null;
private static final String HIGHLIGHT_BOARDER_JS = "arguments[0].style.border='3px solid red'";
@Override
public WebElement findElement(By by)
{
UndoHighlight();
WebElement foundElement = super.findElement(by);
if (this instanceof JavascriptExecutor)
{
((JavascriptExecutor)this).executeScript(HIGHLIGHT_BOARDER_JS, foundElement);
LastElementBorder = GetElementBorder(foundElement);
LastHighlightedElement = foundElement;
}
return foundElement;
}
private void UndoHighlight()
{
if(LastHighlightedElement != null && LastElementBorder != null)
{
try
{
String setLastBorderJS = "arguments[0].style.border='" + LastElementBorder + "'";
if (this instanceof JavascriptExecutor)
((JavascriptExecutor)this).executeScript(setLastBorderJS, LastHighlightedElement);
LastHighlightedElement = null;
LastElementBorder = null;
}
catch(Exception ex) { }
}
}
private String GetElementBorder(WebElement elem)
{
return null;
}
}
我想在上面的链接答案下,我不知道答案者是如何从SCRIPT_GET_ELEMENT_BORDER
下显示的JS变成代表边界的String
的?
为任何web元素返回style.border
值的方法:
private String getElementBorder(WebElement elem)
{
return (String) ((JavascriptExecutor)this).executeScript("return arguments[0].style.border", elem);
}
相关文章:
- 从jquery对话框恢复原始数据,脚本不起作用
- CSS 动画将恢复为原始状态
- jquery悬停后恢复到原始图像是更好的方式
- 如何在拖动时使项目恢复到其原始位置
- 在 history.pushState 之后导航时恢复原始页面
- 按 Esc 按钮后恢复为原始 html
- 向上滚动时,基于滚动位置的 javascript 动画不会恢复到其原始状态
- Javascript变量恢复为原始变量
- HTML In Page 在使用 AJAX 更改内部 HTML 后恢复为原始 HTML
- 是否可以在每次单击按钮时更改背景颜色并恢复为纯JavaScript中的原始颜色
- 元素在 JQuery 动画后恢复为原始大小
- 为什么这个 HTML/JS 在更改内部 HTML 后会恢复到原始状态
- jQuery UI如果移动的距离小于一定距离,则可拖动恢复到原始位置
- 用Selenium突出显示WebElement并恢复原始边界
- Kendo UI网格取消不会恢复原始数据
- 如何恢复到原始CSS
- 如何在. CSS()方法后恢复到原始CSS值
- 如何在使用微软翻译api翻译后恢复原始文本?
- jQuery UI可排序-在ajax错误后恢复原始位置
- 如何恢复原始的文件状态后脚本