Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 登录/重定向后的FindElement。硒幻影_Java_Selenium_Selenium Webdriver_Phantomjs_Ghostdriver - Fatal编程技术网

Java 登录/重定向后的FindElement。硒幻影

Java 登录/重定向后的FindElement。硒幻影,java,selenium,selenium-webdriver,phantomjs,ghostdriver,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=

我在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']"))
那么,Q:通常的解决方案是什么,如何在页面重定向之后获取元素

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

我试图等待:

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
默认情况下,我不使用任何cookie功能。我相信它类似于Chrome的匿名模式,但有幻影浏览器

到目前为止,结果是一样的

更新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(更新依赖项):

因为我当时在想bug

正如在设置部分中一样, 我不再直接依赖PhantomJSDriver,而是下载了最新的PhantomJS和最新的Selenium

因此(org.openqa.selenium.phantomjs.PhantomJSDriver v=1.3.0,selenium 3.0.1):

但是,同样的问题

更新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"))
该屏幕截图显示,实际上,我仍在登录页面上,并且正在等待(登录按钮上的进度条)登录。

现在我认为,当我使用phantomjs或real browser(有一些js触发器阻止我登录)访问某个特定站点时,该站点的行为会有所不同。这有什么区别?
但我想我知道它是什么,但它似乎超出了这个问题的范围(所以我要结束它)。

更新:我试图等待,但它似乎不起作用。在重定向之前,可能驱动程序仍与旧文档连接?还不确定。是否尝试等待元素的出现?是的,我尝试过:update2我通常编写简单的循环例程。F.I.循环40次(在我使其抛出异常之前,最多循环40次)并等待250ms,然后检查元素是否存在(…findelements.by.--etc--.size()>0)。这样更容易控制。我不知道为什么,但等待命令有时似乎有点奇怪。此外,这种例程允许您等待,直到您到达某个特定的URL。
loginButton.click()
driver.manage().timeouts().pageLoadTimeout(50, TimeUnit.SECONDS)
val scrFile = driver.getScreenshotAs(OutputType.FILE)
FileUtils.copyFile(scrFile, new File("/home/me/login.png"))