📜  在 C# 中使用 Selenium WebDriver 执行 JavaScript - Javascript (1)

📅  最后修改于: 2023-12-03 15:23:06.992000             🧑  作者: Mango

在 C# 中使用 Selenium WebDriver 执行 JavaScript

简介

Selenium WebDriver是一种自动化测试工具,用于模拟用户在Web页面上的行为,同时可以与JavaScript进行交互。在C#中,我们可以使用Selenium WebDriver来执行JavaScript代码,实现更高级的自动化测试。

执行JavaScript代码

在C#中使用Selenium WebDriver执行JavaScript代码有两种方法,一种是使用ExecuteScript方法,另一种是使用ExecuteAsyncScript方法。

ExecuteScript方法

ExecuteScript方法可以执行一段同步的JavaScript代码,例如:

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.baidu.com");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string title = (string)js.ExecuteScript("return document.title;");
Console.WriteLine(title);

以上代码执行了一段同步的JavaScript代码,获取网页的title,并打印到控制台中。

ExecuteAsyncScript方法

ExecuteAsyncScript方法可以执行一段异步的JavaScript代码,例如:

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.baidu.com");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string result = (string)js.ExecuteAsyncScript(@"
    var callback = arguments[arguments.length - 1];
    setTimeout(function() {
        callback('Hello World!');
    }, 1000);
");
Console.WriteLine(result);

以上代码执行了一段异步的JavaScript代码,在1秒后返回字符串"Hello World!",并将其打印到控制台中。

与网页元素交互

使用Selenium WebDriver执行JavaScript代码的一个主要应用场景是与网页元素进行交互。以下是一些示例:

点击一个元素

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.baidu.com");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
IWebElement element = driver.FindElement(By.Id("su"));
js.ExecuteScript("arguments[0].click();", element);

以上代码点击了id为"su"的元素。

输入文本框

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://www.baidu.com");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
IWebElement element = driver.FindElement(By.Id("kw"));
js.ExecuteScript("arguments[0].value = 'Hello World!';", element);

以上代码将文本框中的值设置为"Hello World!"。

总结

在C#中使用Selenium WebDriver执行JavaScript代码可以实现更高级的自动化测试,包括与网页元素的交互。另外,Selenium WebDriver还支持执行异步JavaScript代码。