如何在 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
值。
希望这对其他人也有帮助。
我正在使用 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
值。
希望这对其他人也有帮助。