WebDriver driver = getWebDriver();
By by = By.xpath("//*[@pageid='" + menuItem + "']");
Actions action = new Actions(driver);
WebElement elem = driver.findElement(by);
action.moveToElement(elem);
action.perform();
再次感谢大家!
干杯。
答案 0 :(得分:10)
你不能依赖睡眠,所以你应该试试这个:
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
ExpectedConditions
课程中有很多方法。
以下是一些信息:
希望你觉得这很有用。
答案 1 :(得分:6)
似乎我在这个方法的时候没有等待足够长的时间让文字变得可见。添加简单的睡眠功能正是我所需要的。
@When("^I hover over menu item \"(.*)\"$")
public void I_hover_over_menu_item(String menuItem)
{
WebDriver driver = getWebDriver();
By by = By.xpath("//*[@pageid='" + menuItem + "']");
Actions action = new Actions(driver);
WebElement elem = driver.findElement(by);
action.moveToElement(elem);
action.perform();
this.sleep(2);
}
public void sleep(int seconds)
{
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
}
}
希望能帮助其他类似的人!
干杯!
答案 2 :(得分:2)
我也有类似的问题。
我已经解决了。
是的,我认为我们可以插入延迟或使用函数,(...)。findElements(...)。size(),以获得更好的性能。如果函数的结果不是0,那么我们可以单击或执行元素。
根据“https://code.google.com/p/selenium/wiki/GettingStarted”和“WebDriver: check if an element exists?”,我们可以插入延迟并使用该函数来确定我们想要的元素是否存在。
// Sleep until the div we want is visible or 5 seconds is over
long end = System.currentTimeMillis() + 5000;
while (System.currentTimeMillis() < end) {
List<WebElement> elements = driver.findElements(By.id("btn"));
// If results have been returned, the results are displayed in a drop down.
if (elements.size() != 0) {
driver.findElement(By.id("btn")).click();
break;
}
}
等到显示所需的元素或时间到了〜!
答案 3 :(得分:1)
以下是C#for Mouse Hover中的代码。
Actions mousehover = new Actions(driver);
IWebElement Element_Loc = driver.FindElement(By.XPath("html/body/div[1]/table/tbody/tr/td[2]/div[2]/table[2]"));
mousehover.MoveToElement(Element_Loc).Build().Perform();
string Mouse_Text = driver.FindElement(By.XPath("html/body/div[1]/table/tbody/tr/td[2]/div[2]/table[2]")).GetAttribute("alt");
Boolean booltext = Mouse_Text.Equals("your mousehover text goes here.");
Console.WriteLine(booltext);
if (booltext.Equals(true))
{
Console.WriteLine("The text is verified and matches expected");
}
else
{
throw new Exception(" The text does not match the expected");
}
上面的代码基本上使用了Action类的MovToElement函数,然后获取元素位置(xpath)并得到它的属性(可能是(alt,title等))并将其存储在字符串中。稍后将此值与文本进行比较。如果布尔值为true,则测试通过。