簡體   English   中英

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

[英]How to HttpGet a url using ChromeDriver in c#

我正在使用 OpenQA.Selenium.Chrome ChromeDriver 來自動更改瀏覽器。

根據應用程序,URL 只會在用戶登錄瀏覽器時發送響應,否則將返回 400 錯誤

如果 URL 存在與否,我需要識別登錄后,我找不到任何 function 來調用來自 IWebDriver 驅動程序 ZA8CFDE6331BD59EB2AC96F8911C4B66 的 httpGet 請求

IWebDriver driver = new ChromeDriver();

在此處輸入圖像描述

提前致謝。

使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM