如何在 C# 中使用 ChromeDriver HttpGet a url

How to HttpGet a url using ChromeDriver in c#

我正在使用 OpenQA.Selenium.Chrome ChromeDriver 来自动更改浏览器。

根据应用程序,URL 只会在用户登录浏览器时发送响应,否则,它将return 400 错误

如果 URL 存在或不存在,我需要识别 post-login,我找不到任何函数来调用来自 IWebDriver 驱动程序对象的 httpGet 请求

IWebDriver driver = new ChromeDriver();

提前致谢。

使用 class WebDriverWait 得到了一个解决方案,基本上可以 运行 来自当前浏览器实例的 javascript 方法。

所以我所做的是在从 javascript 引发 XMLHttpRequest 时调用非同步,即 async = false,如下所示

return (function () {
    {
        var result = false;
        try {
            {
                var xhttp = new XMLHttpRequest();
                xhttp.open('GET', '<YOUR GET URL HERE>', false); // last param is async = false
                xhttp.send();
                console.log(xhttp.responseText);
                result = !xhttp.responseText.includes('HTTP ERROR 404');
            }
        } catch (err) {
            {}
        }
        return result;
    }
})()

并使用 WebDriverWait class' 配置方法从浏览器循环调用此 javascript 方法直到超时(TimeSpan 为 5000 秒)并转换为 IJavaScriptExecutor 如下所示

IWebDriver driver = new ChromeDriver();
TimeSpan timeToWait = TimeSpan.FromSeconds(5000);
WebDriverWait wait1 = new WebDriverWait(driver, timeToWait);
wait1.Until(d =>
            {
                string url = "<Your GET request URL>";
                bool isURLReachable = (bool)((IJavaScriptExecutor)d).ExecuteScript(String.Format(@"return (function() {{ var result = false; try {{ var xhttp = new XMLHttpRequest(); xhttp.open('GET', '{0}', false); xhttp.send(); console.log(xhttp.responseText); result = !xhttp.responseText.includes('HTTP ERROR 404'); }} catch (err) {{ }} return result;}})()", url));
                    return isURLReachable;
});

这将等到 isURLReachable 具有 true 值。

希望这对其他人也有帮助。