如何在selenium webdriver中突出显示元素

Vin*_*ent 4 c# selenium selenium-webdriver

我试图突出(使用C#在selenium webdriver中找到的元素).我搜索网上所有我发现的是java代码,但需要它在C#中.

或者还有其他方法可以做到这一点.

谢谢

Arr*_*ran 7

没有本地方法可以做到这一点,但是因为Selenium允许你使用它来执行Javascript,你只需要做一些工作就可以完成它:

因此,问题变成"如何在Javascript中更改元素边框?"

如果你使用jQuery它更容易一点,你可以找到元素,然后设置一些边框属性.jQuery有一个简洁的小css属性,允许你传入一个JSON值的字典,它将处理为你设置它们,一个例子是:

jQuery('div.tagged > a:first').css({ "border-width" : "2px", "border-style" : "solid", "border-color" : "red" });
Run Code Online (Sandbox Code Playgroud)

这将找到一个元素,并将其边框设置solid2px宽边,边框颜色为red.

但是,如果您已经拥有IWebElement该元素的实例(可能),您可以从jQuery/Javascript中获取"查找"责任并使其更简单.

这将执行类似于:

var jsDriver = (IJavaScriptExecutor)driver;
var element = // some element you find;
string highlightJavascript = @"$(arguments[0]).css({ ""border-width"" : ""2px"", ""border-style"" : ""solid"", ""border-color"" : ""red"" });";
jsDriver.ExecuteScript(highlightJavascript, new object[] { element });
Run Code Online (Sandbox Code Playgroud)

如果您只是想要基本的Javascript,那么您可以使用该.cssText属性,它允许您提供完整的CSS样式字符串而不是单独添加它们(虽然我不知道它是如何支持它跨浏览器):

var jsDriver = (IJavaScriptExecutor)driver;
var element = // some element you find;
string highlightJavascript = @"arguments[0].style.cssText = ""border-width: 2px; border-style: solid; border-color: red"";";
jsDriver.ExecuteScript(highlightJavascript, new object[] { element });
Run Code Online (Sandbox Code Playgroud)

(虽然还有更多的方法,但我只是为了让它更清晰而走得最啰嗦)


Joh*_*ers 5

C#扩展方法:3秒高亮、清除。

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;
using System.Reactive.Linq;

public static class SeleniumUtil
{
   public static void Highlight(this  IWebElement context)
    {
        var rc = (RemoteWebElement)context;
        var driver = (IJavaScriptExecutor)rc.WrappedDriver;
        var script = @"arguments[0].style.cssText = ""border-width: 2px; border-style: solid; border-color: red""; ";
        driver.ExecuteScript(script, rc);
        Observable.Timer(new TimeSpan(0, 0, 3)).Subscribe(p =>
        {
            var clear = @"arguments[0].style.cssText = ""border-width: 0px; border-style: solid; border-color: red""; ";
            driver.ExecuteScript(clear, rc);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)