如何解决PhantomJSDriver和ChromeDriver之间的某些差异

时间:2016-03-01 22:19:38

标签: c# selenium selenium-webdriver phantomjs selenium-chromedriver

PhantomJSWebDriver切换到.Click时遇到问题,我需要解决方法。

使用ChromeDriver我在可见元素上执行.Click,旁边有另一个可见元素。 .Click使网页在这些元素上放置一个“弹出窗口”。然后我在这个'弹出窗口'中的一个元素上执行.Click然后它就消失了,我能够在第二个原始元素上执行PhantomJSDriver并且一切正常。

然而,当我切换到使用.Click时,它会抱怨在删除'popup'后第二个元素不可见,因此不会执行DriverWait

这是PhantomJS驱动程序的已知问题,还是有某种方法可以让它“重新评估”可见的内容?我已经尝试使用WebDriverWait waitforpopdown = new WebDriverWait(driver, TimeSpan.FromSeconds(15)); waitforpopdown.Until(d => { var elpd = driver.FindElement(By.ClassName(trid)); return elpd.Displayed; }); 查找元素并等待它“显示”但是不起作用

 Option Explicit

 Dim fso, folder, file, todaysDate, recentFile
 Dim folderName, searchFileName, renameFileTo

 folderName     = "C:\Ticket\Test\"
 todaysDate     = Date()

 Set fso = CreateObject("Scripting.FileSystemObject")  
 Set folder = fso.GetFolder(folderName)  
 set recentFile = Nothing

 For each file In folder.Files    
     If (recentFile is Nothing) Then 
          Set recentFile = file
     ElseIf DateValue (file.DateLastModified) = todaysDate then
          Set recentFile = file
          Exit For
     End IF
 Next
 recentFile.Name = Replace(recentFile.Name, "_", "A_")

我正在使用PhantomJS 2.1.1和Selenium 2.52.0.0并使用C#

1 个答案:

答案 0 :(得分:0)

我和PhantomJSDriver有同样的问题。它与Chrome,FF和IE的javascript引擎不同。

我通过在docker上安装运行chrome的selenium服务器“修复”了我的问题。如果你有能力这样做,我建议你这样做。它是一个正在运行的实际Chrome浏览器,因此您在不同类型的chromes之间没有任何区别。

您可以在以下页面找到相关信息:https://github.com/peroumal1/docker-chrome-selenium

编辑:您必须像这样声明您的驱动程序(请注意它是java语法,但我相信您将能够找到C#语法):

return new RemoteWebDriver(new URL("http://myurl.url:8888"), DesiredCapabilities.chrome());