有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Selenium RemoteWebDriver似乎无法识别对web元素的javascript更改

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

 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);样式属性使元素移位,从而使接下来的三个元素可见。这在本地Firefox浏览器上运行得很好,它会接收更改,但当我尝试在网格设置中使用连接到Firefox浏览器的RemoteWebDriver时,元素不再可见。我已经用截图验证了元素在RemoteWebDriver中仍然可见,但我怀疑这些元素是由RemoteWebDriver缓存的,而不是从更新的DOM中获取的

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

澄清一下:在javascript执行之后,我使用driver.findElement(By.xpath(...))方法,等待元素变为可见,但它从来没有变过


共 (1) 个答案

  1. # 1 楼答案

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