我在Selenium Webdriver Java中查询了鼠标悬停操作。
考虑我有一个id为“Lfade”的背景图片,不透明度为0.5。如果我将鼠标悬停在鼠标上,则会显示一个按钮。
我想点击按钮将我带到另一个屏幕。我该怎么做呢 ???
我试过这个,但它不起作用
Actions builder = new Actions(driver);
WebElement tagElement = driver.findElement(By.id("Lfade"));
builder.moveToElement(tagElement).build().perform();
HTML
div id="homeslant"
div id="wrapper"
div id="lFade" class="learn" style="opacity: 0.5; visibility: visible;"
按键
div class="descbtn"
a class="btn dwmbutton" href="/learn/index.html">KNOW MORE</a>
不确定你要做什么,但我注意到这里有一个错误:
builder.moveToElement(tagElement).build().perform();
实际上,.perform()
包括.build()
。
可能你指的是.click()
所以
builder.moveToElement(tagElement).click().perform()
作为您的目标模式,我会:
我使用Robot类进行鼠标悬停。请尝试以下代码。
Robot robot = new Robot();
Point MyPoint = tagElement.getLocation();
robot.mouseMove(MyPoint.getX(), MyPoint.getY())
;
之后使用正常的硒点击按钮。
您需要移动按钮并执行单击。
试试这个
@FindBy(xpath="//*[@id='chromemenu']/span/a") WebElement menuHoverLink;
@FindBy(xpath="//*[@id='dropmenu1']/a[1]") WebElement subLink;
Actions maction = new Actions(driver);
maction.moveToElement(menuHoverLink).build().perform();
Thread.sleep(2000);
subLink.click();
使用此代码它将起作用:
Actions builder = new Actions(driver);
WebElement tagElement = driver.findElement(By.id("Lfade"));
WebElement buttonElement = driver.findElement(By.classname("btn"));
builder.moveToElement(tagElement).moveToElement(buttonElement).click().perform();
试试这个
public void HoverAndClickObject(WebDriver driver, String property1, String property2, String path) throws SAXException, IOException, ParserConfigurationException
{
//get object properties from the xml file repository
Actions action = new Actions(driver);
String[] element1 = xmlParser(path, property1);
String[] element2 = xmlParser(path, property2);
switch (element1[0].toUpperCase())
{
case "XPATH":
driver.findElement(By.xpath(element1[1])).click();
action.moveToElement(driver.findElement(By.xpath(element2[1]))).click().build().perform();
break;
case "ID":
driver.findElement(By.id(element1[1])).click();
break;
case "NAME":
driver.findElement(By.name(element1[1])).click();
break;
case "LINKTEXT":
driver.findElement(By.linkText(element1[1])).click();
break;
case "CSSSELECTOR":
driver.findElement(By.cssSelector(element1[1])).click();
break;
}
}