C# を使用して、セレン webdriver で見つかった (境界線の周りの) 要素を強調表示しようとしています。私が見つけたのはJavaコードだけでしたが、C#で必要です。
またはそれを行う他の方法があります。
ありがとう
C# を使用して、セレン webdriver で見つかった (境界線の周りの) 要素を強調表示しようとしています。私が見つけたのはJavaコードだけでしたが、C#で必要です。
またはそれを行う他の方法があります。
ありがとう
これを行うためのネイティブな方法はありませんが、Selenium では Javascript を実行できるため、もう少し作業を行うだけで実現できます。
したがって、「Javascript で要素の境界線を変更するにはどうすればよいですか?」という質問になります。
jQuery を使用する場合は少し簡単です。要素を見つけて、いくつかの境界線のプロパティを設定できます。css
jQuery には、値の辞書を渡すことができるきちんとした小さなプロパティがJSON
あり、すべての設定を処理します。例は次のようになります。
jQuery('div.tagged > a:first').css({ "border-width" : "2px", "border-style" : "solid", "border-color" : "red" });
それは要素を見つけて、その境界線をの境界線の色solid
で広くなるように設定します。2px
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 });
基本的な 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 });
(他にも方法はありますが、わかりやすくするために最も冗長なものを選択しました)
ありがとう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 });
それは完全に機能します...もう一度ありがとう。
クラスファイルに以下の 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 ページ上の任意の要素を強調表示できます。