在执行一些 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 执行后使用该方法,并等待元素变得可见,但它永远不会这样做。