Selenium Watir webdriver测试运行仅在Windows7(32或64位)中失败并在Windows8(32或64位)中通过

Selenium Watir webdriver测试运行仅在Windows7(32或64位)中失败并在Windows8(32或64位)中通过,windows,selenium,xpath,watir,watir-webdriver,Windows,Selenium,Xpath,Watir,Watir Webdriver,我们使用watirwebdriver和ruby来自动化web应用程序。当我遇到一个问题时,我的测试运行在Windows 8环境中通过,在Windows 7环境中失败。 通常,当我们完成自动化脚本时,我们会在Win-7和Win-8环境的虚拟机上测试它们 我的脚本中有一个鼠标悬停动作,在windows 7中失败,在windows 8中传递。当我手动检查时,它工作正常 我观察到的一个奇怪的行为是,如果我打开VM(Windows 7)(通过远程桌面),而测试运行正在进行,而测试正在通过 点击上面截图

我们使用watirwebdriver和ruby来自动化web应用程序。当我遇到一个问题时,我的测试运行在Windows 8环境中通过,在Windows 7环境中失败。 通常,当我们完成自动化脚本时,我们会在Win-7和Win-8环境的虚拟机上测试它们

我的脚本中有一个鼠标悬停动作,在windows 7中失败,在windows 8中传递。当我手动检查时,它工作正常

我观察到的一个奇怪的行为是,如果我打开VM(Windows 7)(通过远程桌面),而测试运行正在进行,而测试正在通过

点击上面截图中显示的“AZ”按钮后,我在“日期/时间”选项上执行鼠标悬停操作。然后尝试单击“升序”选项。在Win-8环境中通过了相同的测试,但在Win-7中,selenium无法识别“升序”选项,因此失败。 单击“AZ”按钮后,获取“日期/时间”元素引用,然后执行如下悬停操作:

element.hover
下面是我尝试过的不同XPath:

orderXpath = "(//ul[@class = 'submenu hide_sort_submenu']//a[contains(text(),'Ascending')])[1]"
orderXpath = "//ul[@class = 'submenu hide_sort_submenu' and contains(@style,'display: inline')]//a[contains(text(),'Ascending')]"
然后我执行点击操作

orderElement.click

有人遇到过这种问题吗?

首先,在大多数情况下,不能使用由空格分隔的多个类,所以请使用contains和@class definition。其次,选择包含文本的内容是一种非常糟糕的做法。至于我,我也更喜欢css选择器,因为它们更好、更容易支持。单击类似于:
@browser.element(:css=>“ul#sort_menu_0a[id*=asc]”)。单击
@Stanjer我在xpath中也使用了id属性,但我仍然面临同样的问题