gpt4 book ai didi

c# - 如何在 PhantomDriver( headless 浏览器)中没有 findElement 函数错误的情况下隐藏 FirefoxDriver(使用 Selenium)?

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:16 25 4
gpt4 key购买 nike

我尝试制作隐藏的 FirefoxDriver。根据我的研究,我必须使用 PhantomJSDriver 但当我使用 PhantomJSDriver 驱动程序时。FindElement 语句不再不起作用。

        var options = new PhantomJSOptions();       
options.AddAdditionalCapability("phantomjs.page.settings.userAgent",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/40.0.2214.94 Safari/537.36");
PhantomJSOptions p = new PhantomJSOptions();
var service = PhantomJSDriverService.CreateDefaultService();
service.SslProtocol = "any";
service.ProxyType = "http";
service.WebSecurity = false;
service.IgnoreSslErrors = true;
var driver = new PhantomJSDriver(service, options);
driver.Navigate().GoToUrl("https://www.google.com.tr/");
Thread.Sleep(5000);
driver.FindElement(By.XPath("//*[@id='lst-ib']")).SendKeys("edd");
string s = driver.Url;
Console.WriteLine(s);

错误信息:

WebDriver.dll 中发生类型为“OpenQA.Selenium.NoSuchElementException”的未处理异常

附加信息:{“errorMessage”:“无法通过 xpath 找到元素‘//[@id='_fZl']/span/svg/path'”,“request”:{“headers”:{“Accept”:“application/json, image/png","Connection":"Close","Content-Length":"57","Content-Type":"application/json;charset=utf-8","Host":"localhost:50454"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"xpath\",\"value\":\"//[@id='_fZl']/span/svg/path\"}","url":"/element","urlParsed":{"anchor":"","query":"""文件":"元素","目录":"/","路径":"/元素","相对":"/元素","端口":"","主机":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{}, "chunks":["element"]},"urlOriginal":"/session/feab13f0-720f-11e7-80b3-452aee308158/element"}}

还有其他隐藏 FirefoxDriver 的方法吗?你能帮帮我吗?

最佳答案

我解决了。首先我们可以使用 PhantomJS 而无需通过以下代码显示其控制台:

IWebDriver driver; 
var driverService = PhantomJSDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;
driver = new PhantomJSDriver(driverService);

其次是我提到的错误。Google 为浏览器返回不同的 HTML 页面,因此 PhantomJS 浏览器中的 Id 或 Xpath 将与我在打开 Firefox 时导出的不同。当我使用

string html=driver.PageSource;

要了解正确的 XPath 或 Id,findElement 函数运行良好。

例如:对于谷歌网站的结果FirefoxDriver 中第一个链接的 XPath 是

"//*[@id='rso']/div/div/div[1]/div/div/h3/a"

PhantomJSDriver 中第一个链接的 XPath 是

"//*[@id='ires']//ol/div[1]/h3/a"

关于c# - 如何在 PhantomDriver( headless 浏览器)中没有 findElement 函数错误的情况下隐藏 FirefoxDriver(使用 Selenium)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45233065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com