0

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']";

最初の3つの要素は、ページが読み込まれるときに表示されます。javascript関数を使用すると、-moz-transform: translate3d(-1084px, 0px, 0px);スタイル属性を介して要素がシフトし、次の3つの要素が表示されるようになります。これは、変更を取得するローカルFirefoxブラウザーでうまく機能しますが、Firefoxブラウザーに接続されたRemoteWebDriverをグリッド設定で使用しようとすると、要素が表示されなくなります。スクリーンショットを使用して、要素がRemoteWebDriverに引き続き表示されていることを確認しましたが、要素が更新されたDOMから取得されるのではなく、RemoteWebDriverによってキャッシュされていると思われます。

これを確認する方法はありますか?もしそうなら、要素が表示されるようにDOMを更新するにはどうすればよいですか?

明確にするために:私driver.findElement(By.xpath(...))はjavascriptが実行された後にメソッドを使用し、要素が表示されるのを待ちますが、表示されることはありません。

4

1 に答える 1

0

Firefoxのバージョンは2つの環境間で一貫していましたが、selenium-server(およびFirefoxDriver)のバージョンはローカルマシンとグリッド間で異なっていたことがわかりました。ローカルマシン(意図したとおりに機能した)では、selenium-server_2.25.0を使用していましたが、グリッドはselenium-server_2.28.0(意図したとおりに機能しませんでした)を使用していました。影響を及ぼした違いの1つは、Firefoxネイティブイベントを使用するようにFirefoxDriverが変更されたことです。selenium-server_2.31.0を更新すると、意図したとおりに機能(および可視性)が復元されることを確認しました。

于 2013-03-27T20:02:07.443 に答える