我尝试制作隐藏的FirefoxDriver。根据我的研究,我必须使用PhantomJSDriver但是当我使用PhantomJSDriver时,driver.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);
错误讯息:
未处理的类型' OpenQA.Selenium.NoSuchElementException'发生在WebDriver.dll
中其他信息: {" errorMessage":"无法找到带有xpath的元素' // [@ id =' _fZl'] / span / svg / path&#39 ;","请求":{"标题":{"接受":" application / json,image / png", "连接":"关闭"" Content-Length的":" 57""内容类型":& #34;应用/ JSON;字符集= UTF-8""主机":"本地主机:50454"}" httpVersion":" 1.1""方法":" POST""后":" {\"使用\&#34 ;: \"的xpath \" \"值\":\" // [@ ID =' _fZl'] /跨度/ SVG /路径\"}"" URL":" /元件"" urlParsed" {"锚&# 34;:"""查询":"""文件":"元件"&# 34;目录":" /""路径":" /元件""相对于":" /元素""端口":"""主机":"""密码&#34 ;: """使用者":""" USERINFO":"""权威& #34 ;: """协议":"""源":" /元件"" queryKey":{},"大块":["元件"]}" urlOriginal":" /会话/ feab13f0-720f-11E7 -80b3-452aee308158 /元件"}}
还有其他隐藏FirefoxDriver的方法吗? 你能帮帮我吗?
答案 0 :(得分:1)
Since version 55+ for Linux and 56+ for Windows & OSX, Firefox supports the -headless
command line option. It shall be used like this:
o = selenium.webdriver.FirefoxOptions()
o.set_headless()
driver=selenium.webdriver.Firefox(options=o)
The corresponding code in C# would be:
var o = new FirefoxOptions()
o.AddArgument('-headless')
var driver = new FirefoxDriver(o)
Because the .NET wrapper doesn't support the .headless
property.
答案 1 :(得分:0)
本身无法隐藏FirefoxDriver。您可以在虚拟机上运行它并最小化vm窗口,但这对大多数人来说都不实用。
让我们来看看你真正的问题。看起来Google正在使用js分配搜索框的ID以防止抓取,因为它违反了他们的服务条款。
你有几个选择:
1)使用名称'q'定位元素,因为无论phantomjs还是firefox,它都被命名为。
2)直接进入搜索结果页面:https://www.google.com.tr/search?q=edd