Diskuze: GET request se spuštením JS
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ahoj,a o ti brání v použití WebBrowser?
Zkus tohle... je to úryvek kódu
Používám to v multithread aplikaci na generování obrázků z html.
var docKomplet = false;
var th = new Thread(() =>
{
WebBrowser wb1 = new WebBrowser();
var hasPrinted = false;
wb1.DocumentCompleted += (sender, e) =>
{
// logika po načtení stránky
docKomplet = true;
wb1.Dispose();
Application.ExitThread();
};
wb1.Size = new System.Drawing.Size(1376, 786);
wb1.ScriptErrorsSuppressed = true;
wb1.DocumentText = Content;
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
// Cekani na konec
while (!docKomplet)
Thread.Sleep(50);
a jak to mám udělat, když je to webová aplikace?
Firefox a Chrome mají "headless mode", kdy jednoduše spustíš prohlížeč
přes konzoli bez GUI a necháš si vrátit výstup.
https://developer.mozilla.org/…eadless_mode
https://developers.google.com/…dless-chrome
Je to standardní .NET aplikace jako každá jiná, máš k dispozici
všechny knihovny. Přidej si do referencí System.Windows.Forms a bude ti to
fungovat.
Pokud by to byl .NET Core pak by bylo řešení jiné.
Řešení
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");
using (var browser = new ChromeDriver(chromeOptions))
{
browser.Url = "moje url";
browser.Navigate();
}
Jen varování...
až to nahraješ na server, bude tam taky chrome? Jsi si jistý, že to bude
fungovat i za 10 verzí Chromu?
S použitím Google aplikací bych byl velmi opatrný, mívají schopnost měnit
funkčnost... zaděláš si tím na možné problémy...
chrome jsem nainstaloval na server. Budoucnost ukáže, zda to bude dlouhodobě fungovat. Je to naštěstí jen "preventivní test", případně mi přijde upozornění emailem
Zobrazeno 9 zpráv z 9.