在各处搜索之后,我似乎找不到让鼠标悬停事件在Mac OSX上使用Firefox 16.0.2和Selenium 2.28的解决方案(我认为这应该是Mac OSX特有的问题,但是此代码应该可以使用一台Windows机器)。我有以下几个悬停在objectOnScreen上的内容,它应该显示一些ElseOnScreen:
//set enable native events is suggested by another post to make these native events work
FirefoxProfile prof = new FirefoxProfile();
prof.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(prof);
// Hover over objectOnScreen which should reveal somethingElseOnScreen
Action builder;
Actions hover = new Actions(driver);
WebElement objectOnScreen = driver.findElement(By.xpath("//..."))
hover.moveToElement(objectOnScreen);
builder = hover.build();
builder.perform();
// Click something new that should appear on screen
By somethingElseOnScreen = By.xpath("//...");
WebDriverWait wait = new WebDriverWait(driver, 5L);
wait.until(ExpectedConditions.visibilityOfElementLocated(somethingElseOnScreen));
driver.findElement(somethingElseOnScreen).click();
此代码适用于Chrome,但不适用于Firefox。在Firefox中,someElseOnScreen永远不会出现(我得到了wait.until ...行的NoSuchElementException),当我看到浏览器时,我从未看到悬停工作。
我也试过这两件事,但都没有解决问题:
是否有人针对此问题采取了解决方法?
谢谢。
答案 0 :(得分:1)
我的解决方法是手动将元素的css display
属性更改为inline
(或block
- 取决于您的HTML代码),该属性是隐藏的并且应显示在“鼠标悬停”上(或者调用JavaScript,在同一个偶数上添加所需的元素 - 取决于你的HTML代码)。
如果你能告诉我3件事,我可以告诉你具体的代码:
mouseover
mouseover