0

在执行一些 javascript 后,我​​一直在尝试测试 WebElements 的可见性。WebElements 可以通过以下 xpaths 找到:

 public static final String MOBILE_APPS_RUNNING_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-running']";
 public static final String MOBILE_APPS_FUELBAND_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-fuelband']";
 public static final String MOBILE_APPS_BASKETBALL_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-basketball']";
 public static final String MOBILE_APPS_TRAINING_APP_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-training']";
 public static final String MOBILE_APPS_KINECT_APP_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-kinect']";
 public static final String MOBILE_APPS_MORE_APPS_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-more']";

页面加载时,前三个元素是可见的。一个 javascript 函数通过-moz-transform: translate3d(-1084px, 0px, 0px);style 属性使元素移动,以便接下来的三个元素变得可见。这适用于本地 Firefox 浏览器,它可以获取更改,但是当我尝试在网格设置中使用附加到 Firefox 浏览器的 RemoteWebDriver 时,这些元素不再可见。我已经通过屏幕截图验证了这些元素在 RemoteWebDriver 中仍然可见,但我怀疑这些元素是由 RemoteWebDriver 缓存的,而不是从更新的 DOM 中获取的。

有没有办法验证这一点,如果是这样,我怎样才能刷新 DOM 以便我可以看到元素现在可见?

澄清一下:我driver.findElement(By.xpath(...))在 javascript 执行后使用该方法,并等待元素变得可见,但它永远不会这样做。

4

1 回答 1

0

事实证明,selenium-server(和 FirefoxDriver)的版本在我的本地机器和网格之间是不同的,即使 Firefox 的版本在两个环境之间是一致的。在我的本地机器(按预期工作)上,我使用的是 selenium-server_2.25.0,而网格使用的是 selenium-server_2.28.0(没有按预期工作)。产生影响的差异之一是 FirefoxDriver 更改为使用 Firefox 本机事件。我验证了对 selenium-server_2.31.0 的更新按预期恢复了功能(和可见性)。

于 2013-03-27T20:02:07.443 回答