5

C# を使用して、セレン webdriver で見つかった (境界線の周りの) 要素を強調表示しようとしています。私が見つけたのはJavaコードだけでしたが、C#で必要です。

またはそれを行う他の方法があります。

ありがとう

4

4 に答える 4

8

これを行うためのネイティブな方法はありませんが、Selenium では Javascript を実行できるため、もう少し作業を行うだけで実現できます。

したがって、「Javascript で要素の境界線を変更するにはどうすればよいですか?」という質問になります。

jQuery を使用する場合は少し簡単です。要素を見つけて、いくつかの境界線のプロパティを設定できます。cssjQuery には、値の辞書を渡すことができるきちんとした小さなプロパティがJSONあり、すべての設定を処理します。例は次のようになります。

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

それは要素を見つけて、その境界線をの境界線の色solidで広くなるように設定します。2pxred

ただし、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 });

基本的な 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 });

(他にも方法はありますが、わかりやすくするために最も冗長なものを選択しました)

于 2013-09-13T10:55:59.160 に答える
3

ありがとうArran私はちょうどあなたの答えを変更しました..

var jsDriver = (IJavaScriptExecutor)driver;
var element = //element to be found
string highlightJavascript = @"arguments[0].style.cssText = ""border-width: 2px; border-style: solid; border-color: red"";";
jsDriver.ExecuteScript(highlightJavascript, new object[] { element });

それは完全に機能します...もう一度ありがとう。

于 2013-09-13T12:13:09.290 に答える
0

クラスファイルに以下の JavaScript Executor コードを記述します

public void elementHighlight(WebElement element) {
            for (int i = 0; i < 2; i++) {
                JavascriptExecutor js = (JavascriptExecutor) driver;
                js.executeScript(
                        "arguments[0].setAttribute('style', arguments[1]);",
                        element, "color: red; border: 5px solid red;");
                js.executeScript(`enter code here`
                        "arguments[0].setAttribute('style', arguments[1]);",
                        element, "");
            }

Selenium テスト ケースから上記のメソッドを呼び出して、Web ページ要素を強調表示します。それがどのように行われるかを示す以下のコードをチェックしてください。elementHighlight メソッドは、searchBox を引数として呼び出されます。

@Test
    public void GoogleSearch() throws Exception, SQLException {

        driver.findElement(By.xpath("//center/div[2]")).click();
        WebElement searchBox = driver.findElement(By.xpath("//div[3]/div/input"));
        elementHighlight(searchBox);
        driver.findElement(By.xpath("//div[3]/div/input")).clear();
        driver.findElement(By.xpath("//div[3]/div/input")).sendKeys("Test");
        driver.findElement(By.xpath("//button")).click();

    }

上記のテストを実行すると、Selenium テストにより、Google ホームページの検索ボックスが強調表示されます。elementHighlight メソッドを再利用して、Web ページ上の任意の要素を強調表示できます。

于 2015-05-16T11:25:41.820 に答える