提问人:Mayank 提问时间:2/14/2021 最后编辑:Mayank 更新时间:2/25/2021 访问量:1024
如何在 c 中使用 ChromeDriver 获取 url#
How to HttpGet a url using ChromeDriver in c#
问:
我正在使用 OpenQA.Selenium.Chrome ChromeDriver 来自动更改浏览器。
根据应用程序,URL 只会在用户登录浏览器时发送响应,否则将返回 400 错误
我需要在登录后识别 URL 是否存在,我找不到任何函数来从 IWebDriver 驱动程序对象调用 httpGet 请求
IWebDriver driver = new ChromeDriver();
提前致谢。
答:
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 秒),并强制转换为如下所示WebDriverWait
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
希望这也能帮助其他人。
评论