如何在 c 中使用 ChromeDriver 获取 url#

How to HttpGet a url using ChromeDriver in c#

提问人:Mayank 提问时间:2/14/2021 最后编辑:Mayank 更新时间:2/25/2021 访问量:1024

问:

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

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

我需要在登录后识别 URL 是否存在,我找不到任何函数来从 IWebDriver 驱动程序对象调用 httpGet 请求

IWebDriver driver = new ChromeDriver();

enter image description here

提前致谢。

C# 硒 硒 webdriver chrome-web驱动程序

评论

0赞 Dazed 2/15/2021
如果您尝试通过 api 调用执行此操作,请将 RestSharp 添加到您的解决方案中。
0赞 Mayank 2/17/2021
@GregBurghardt 它不是代码 所附的图像是 Selenium 提供的库的一部分。Chrome Web驱动程序,可以集成到 C# 项目中并进行自动化。
0赞 Greg Burghardt 2/17/2021
您问题中的图像是库的一部分?我想你误会我了。问题中包含 C# 代码的图像。从问题中删除图像,然后复制截屏的代码,并将其粘贴到问题中。
0赞 Mayank 2/17/2021
@GregBurghardt 是的,它是问题的一部分,位于 Webdriver 程序集下,在图像顶部可见。这个库来自 selenium,它具有可以自动执行浏览器操作的功能,我的问题与如何使用此 webdriver Chrome 库从浏览器发起 ajax 调用有关。
0赞 Greg Burghardt 2/17/2021
这个画面让我感到困惑。我以前从未见过有人在汇编类上从“进入定义”中截取代码的屏幕截图。不知道为什么需要。你试过什么代码?

答:

0赞 Mayank 2/25/2021 #1

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

所以我所做的是调用一个非同步的,即 async = false,同时从 javascript 提出 XMLHttpRequest,如下所示

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;
    }
})()

并使用类的配置方法从浏览器循环调用此 javascript 方法,直到超时(TimeSpan 为 5000 秒),并强制转换为如下所示WebDriverWaitIJavaScriptExecutor

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;
});

这将等到有价值。isURLReachabletrue

希望这也能帮助其他人。