2015-05-04 21 views
3

我在與PhantomJSDriver和Java一個奇怪的問題,
我試圖點擊這樣的鏈接:PhantomJSDriver找到的元素,但仍然是不確定的

WebElement loginButton = wait.until(
       ExpectedConditions.elementToBeClickable(By.xpath("//a[@ui-sref='login']")) 
       ); 
     LOG.debug("Login Button Found : ["+loginButton.getAttribute("href")+"]"); 
     loginButton.click(); 

隨着克羅姆驅動程序我不是有任何問題,但phantomsJS(2.0.0(或我有這樣那樣的錯誤1.9.7/1.9.8)和GhostDriver 1.2.0:

[DEBUG - 2015-05-04T09:46:03.610Z] WebElementLocator - _handleLocateCommand - Element(s) Search Start Time: 1430732763610 
[DEBUG - 2015-05-04T09:46:03.612Z] WebElementLocator - _find.locator - {"using":"xpath","value":"//a[@ui-sref='login']"} 
[DEBUG - 2015-05-04T09:46:03.624Z] WebElementLocator - _locateElement.locator - {"using":"xpath","value":"//a[@ui-sref='login']"} 
[DEBUG - 2015-05-04T09:46:03.624Z] WebElementLocator - _locateElement.findElementResult - {"status":0,"value":{"ELEMENT":":wdc:1430732763623"}} 
[DEBUG - 2015-05-04T09:46:03.624Z] WebElementLocator - _handleLocateCommand.elements - {"status":0,"value":{"ELEMENT":":wdc:1430732763623"}} 
[DEBUG - 2015-05-04T09:46:03.624Z] WebElementLocator - _handleLocateCommand.rootElement - BODY 
[DEBUG - 2015-05-04T09:46:03.625Z] WebElementLocator - _handleLocateCommand - Element(s) Found. Search Stop Time: 1430732768610 

和錯誤消息:

org.openqa.selenium.WebDriverException: {"errorMessage":"undefined is not an object (evaluating '(y(a)?y(a).parentWindow||y(a).defaultView:window).getComputedStyle(a,null).MozTransform.match')","request":{"headers":{"Accept":"application/json, image/png","Cache-Control":"no-cache","Connection":"Keep-Alive","Host":"localhost:7356"},"httpVersion":"1.1","method":"GET","url":"/displayed","urlParsed":{"anchor":"","query":"","file":"displayed","directory":"/","path":"/displayed","relative":"/displayed","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/displayed","queryKey":{},"chunks":["displayed"]},"urlOriginal":"/session/5f287dd0-f242-11e4-9753-1726c362b9fc/element/%3Awdc%3A1430732763623/displayed"}} 
Command duration or timeout: 229 milliseconds 

我增加等之前明確的等待,但它什麼都不做...... 怪異的一部分,如果,如果我嘗試這種代碼,而不是:

d.findElement(By.xpath("//a[@ui-sref='login']")); 
LOG.debug("Login Button Found : ["+loginButton.getAttribute("href")+"]"); 
loginButton.click(); 

我可以訪問href屬性!
但點擊()方法失敗

[編輯] 第一PhanstomJS配置是這樣的:

// Change "User-Agent" via page-object capabilities 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent", "My User Agent - Chrome"); 
// Disable "web-security", enable all possible "ssl-protocols" and "ignore-ssl-errors" for PhantomJSDriver 
sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new String[] { 
       "--web-security=false", 
       "--ssl-protocol=any", 
       "--ignore-ssl-errors=true", 
       "--webdriver-loglevel=DEBUG" 
      }); 


// Fetch configuration parameters 
// "phantomjs_exec_path" 
if (sConfig.getProperty("phantomjs_exec_path") != null) { 
    sCaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, sConfig.getProperty("phantomjs_exec_path")); 
} else { 
    throw new IOException(String.format("Property '%s' not set!", PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY)); 
    } 
} 

謝謝您的幫助!

+0

這同樣的錯誤在這個問題解決了,看看是否有幫助 - HTTP: //stackoverflow.com/questions/25592316/phantom-js-fails-50-of-the-time。請添加您設置phantomjs選項的代碼部分。 – LittlePanda

回答

4

你可以試試下面的配置爲PhantomJS:

DesiredCapabilities capabilities; 
capabilities = new DesiredCapabilities();  
capabilities.setJavascriptEnabled(true); 
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "drivers/phantomjs.exe"); 
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX,"Y"); 
capabilities.setCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:16.0) Gecko/20121026 Firefox/16.0"); 

//intialize driver and set capabilties 

driver = new PhantomJSDriver(capabilities); 

此外,嘗試尋找元素是這樣的:

wait.until(ExpectedConditions.presenceOfElementLocated(byExpression)); 
+0

謝謝!這真的是用戶代理,我的僞用戶代理_「我的用戶代理 - 鉻」_是廢話.... – doctori

+0

謝謝!解決了我4個小時!!! bug – YyYo

+0

我沒有一個帶有DesiredCapabilities對象的PhantomJSDriver構造函數:/ –

相關問題