如何在PhantomDriver(无头浏览器)中隐藏FirefoxDriver(使用Selenium)而不会出现findElement函数错误?我尝试制作隐藏的FirefoxDriver。根据我的研究,我必须使用PhantomJSDriver,但是当我使用PhantomJSDriver时,driver.FindElement语句不再起作用。varoptions=newPhantomJSOptions();options.AddAdditionalCapability("phantomjs.page.settings.userAgent","Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/40.0.2214.94Safari/537.36");PhantomJSOptionsp=newPhantomJSOptions();varservice=PhantomJSDriverService.CreateDefaultService();service.SslProtocol="任何";service.ProxyType="http";service.WebSecurity=false;service.IgnoreSslErrors=true;PhantomJSDriver(服务,选项);driver.Navigate().GoToUrl("https://www.google.com.tr/");线程.睡眠(5000);driver.FindElement(By.XPath("//*[@id='lst-ib']")).SendKeys("edd");strings=driver.Url;控制台.WriteLine(s);错误消息:未处理的“OpenQA.Selenium.NoSuchElementException”类型异常附加信息:{“errorMessage”:“无法使用xpath'//[@id='_fZl']/span/svg/path'”找到元素,“请求”:{“标题”:{“接受”:“应用程序/json,图像/png”,“连接”:“关闭”,“Content-Length":"57","Content-Type":"application/json;charset=utf-8","Host":"localhost:50454"},"httpVersion":"1.1","Method":"POST","post":"{"xpath"使用":""value":"//[@id='_FZL']/range/svg/path"}","url":"/element","urlParsed":{"anchor":"","query":"","file","element","directory":"/","path":"/element","relative":"/element","端口":"","主机":"","密码":"","用户":"","用户信息":"","权限":"","协议":"","source":"/element","queryKey":{},"block":["element"]}"urlOriginal":"/session/feab13f0-720f-11e7-80b3-452aee308158/element"}}有没有其他隐藏FirefoxDriver的方法?你能帮我吗?我解决了。首先,我们可以使用PhantomJS而无需通过以下代码显示其控制台:IWebDriverdriver;vardriverService=PhantomJSDriverService.CreateDefaultService();driverService.HideCommandPromptWindow=true;driver=newPhantomJSDriver(driverService);第二个是我提到的错误Google为浏览器返回不同的HTML页面,所以PhantomJS浏览器中的Id或Xpath会和我打开Firefox时导出的不一样。当我使用stringhtml=driver.PageSource;时,findElement函数工作正常;知道正确的XPath或Id是什么。示例:FirefoxDriverforGoogle站点结果中第一个链接的XPath在PhantomJSDriver中是“//*[@id='rso']/div/div/div[1]/div/div/h3/a”链接XPath是"//*[@id='ires']//ol/div[1]/h3/a"Firefox自Linux版本55+和Windows&OSX版本56+起支持-headless命令行选项。应该这样使用:o=selenium.webdriver.FirefoxOptions()o.set_headless()driver=selenium.webdriver.Firefox(options=o)在C#中对应的代码是:varo=newFirefoxOptions()o.AddArgument('-headless')vardriver=newFirefoxDriver(o)因为.NET包装器不支持.headless属性。无法隐藏FirefoxDriver本身。您可以在虚拟机上运行它并最小化vm窗口,但这对大多数人来说并不实用。让我们来看看你真正的问题。看起来Google正在使用js分配搜索框的ID以防止抓取,因为这违反了他们的服务条款。您有两个选择:1)找到名称为“q”的元素,无论是phantomjs还是firefox。2)直接进入搜索结果页面:https://www.google.com.tr/search?id=1q=edd以上是C#学习教程:HowtohideFirefoxDriver(usingSelenium)inPhantomDriver(headless浏览器)没有findElement函数错误?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
