[英]How to HttpGet a url using ChromeDriver in c#
使用 class WebDriverWait
獲得了一個解決方案,該解決方案基本上可以從當前瀏覽器實例運行 javascript 方法。
所以我所做的是調用異步即 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;
}
})()
並使用WebDriverWait
類的配置方法從瀏覽器循環調用此 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
值。
希望這對其他人也有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.