PhantomJS& Selenium与GhostDriver突发错误:未找到元素(Java)

时间:2015-05-06 09:18:47

标签: java selenium-webdriver phantomjs ghostdriver

我使用Java中的GhostDriver处理Selenium和PhantomJS。 我做了一些正常工作的测试,但自上周以来,一些突然的错误阻止了工作,没有修改代码......

  • Windows 7。
  • JDK版本为1.7.0_75。
  • PhantomJS 1.9.7包含它的路径。
  • GhostDriver 1.1.0包含在Eclipse Java SE项目中。
  • Selenium 2.43.1包含在Eclipse Java SE项目中。

这是我使用的基本代码示例,并在上周之前工作:

//The imports

import com.thoughtworks.selenium.Selenium;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import com.thoughtworks.selenium.webdriven.WebDriverBackedSelenium;

//The code

Selenium selenium;
String baseUrl = "http://www.url.com";
WebDriver driver;
DesiredCapabilities dCaps;
String phantom = "phantomjs-1.9.7-windows/phantomjs.exe";

dCaps = new DesiredCapabilities();
dCaps.setJavascriptEnabled(true);
dCaps.setCapability("takesScreenshot", true);
dCaps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new String[] {"--ignore-ssl-errors=true"});
dCaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantom);
driver = new PhantomJSDriver(dCaps);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
selenium = new WebDriverBackedSelenium(driver, baseUrl);

selenium.open(url);
selenium.type("name=element", "example");
selenium.click("name=Send");
selenium.waitForPageToLoad("30000");

driver.quit();
selenium.stop();

我可以单独使用Selenium,它可以工作......(有和没有代理) 我可以单独使用PhantomJS,它可以工作......

但是当我在GhostDriver中使用这两个时(因此,仅从上周开始)我有两个问题:

  • 日志告诉我:[错误 - 2015-05-05T14:27:09.344Z] WebElementLocator - _handleLocateCommand - 未找到元素:GAVE UP。搜索停止时间:1430836029300
  • 我遇到错误:元素名称=未找到元素

我理解元素不存在或错误(我每次控制都没有错误)...可能是页面未正确加载... 我无法使用屏幕截图来查看问题:我只有黑屏......

我实际上正在添加有关等待和控制的代码,如果元素存在哪种方式不同......但暂时没有任何改变:

  • selenium.waitForPageToLoad(30000);
  • 的Thread.sleep(7000);
  • selenium.isElementPresent(myElement);

我开始尝试使用selector和selenium.waitForFrameToLoad()的driver.findElement()...

我尝试删除PhantomJS并替换为FirefoxDriver,它有效...... 我试图评论或不评论dCaps或驱动程序的部分......没有任何作用......

我知道PhantomJS / GhostDriver似乎是个问题...但我不明白!

选择器有问题吗? 是否有使用等待和控制代码的特定方法? 可能是我犯了错误? 我忘了重要的事吗? 问题为什么现在才出现,没有变化?

0 个答案:

没有答案