登录/重定向后的FindElement。 PhantomJS含硒

时间:2016-11-20 04:57:42

标签: java selenium selenium-webdriver phantomjs ghostdriver

我在Linux上使用PhantomJSDriver和Selenium v​​.2.1(目前最新)。

我登录,点击提交按钮,然后我的网站重定向(2次,http 302),我尝试在他/她登录时找到用户名。

  loginButton.click() // will refresh the page

  // TODO: after redirect (302). wait?

  val profileElement = driver.findElement(By.xpath("//*[@id='login_name']"))

所以,问:通常的解决方案是什么,如何在页面重定向后获取元素?

更新:(页面重新加载等待)

我试着等待:

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

默认情况下,我不使用任何cookie功能。我相信它类似于Chrome'匿名模式,但使用Phantom浏览器。

到目前为止的结果相同。

更新2(等待特定元素)

我试图在用户登录后等待我期望的特定元素:

val waitForProfileNameLink = new WebDriverWait(driver, 10)
waitForProfileNameLink.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='login_name']")))

presenceOfElementLocated

相同

在等待时,我在日志中看到:

 phantomjs://platform/console++.js:263 in error
[ERROR - 2016-11-20T14:10:37.777Z] WebElementLocator - _handleLocateCommand - Element(s) NOT Found: GAVE UP. Search Stop Time: 1479651037763
多次。我猜这是它尝试/等待的方式。

更新3(更新依赖项):

因为我在考虑this错误,所以

与“设置”部分中的suggested一样, 我摆脱了对PhantomJSDriver的直接依赖,而是下载了最新的Phantom JS和最新的Selenium,

so(org.openqa.selenium.phantomjs.PhantomJSDriver v = 1.3.0,Selenium 3.0.1):

   System.setProperty("phantomjs.binary.path","/home/me/phantomjs/bin/phantomjs")

  implicit val driver: RemoteWebDriver = new PhantomJSDriver()

但是,同样的问题。

更新4 - (截图)

我在尝试登录后做了截图:

loginButton.click()
driver.manage().timeouts().pageLoadTimeout(50, TimeUnit.SECONDS)
val scrFile = driver.getScreenshotAs(OutputType.FILE)
FileUtils.copyFile(scrFile, new File("/home/me/login.png"))

该截图显示,实际上,我仍然在登录页面上,并且正在等待登录按钮(登录按钮上的进度条)

现在我认为当我使用幻影或真正的浏览器去那里时,某个特定网站的行为会有所不同(有些js trigets让我无法进入)。那可能是什么区别? 但我想我知道它是什么,但似乎它超出了这个问题的范围(所以我关闭它)。

0 个答案:

没有答案