无法获得Selenium Actions来构建()&执行()

时间:2017-12-13 21:07:27

标签: java selenium internet-explorer

我在这里结束了我的智慧。我假设我做错了什么但我不能为我的生活找出了什么。

我有一个导航栏我试图将鼠标悬停在主要元素上,导致下拉菜单展开,然后单击IEx86中的子元素。这看起来很简单吧?

HTML(通用版):

<nav class="navHeader">
	<ul class="topNavigation">
		<li class="firstItem"><a href="/Home">Home</a></li>
		<li class="current"><a href="javascript:void(0)">Transactions</a>
			<ul style="display: block;">
				<li class=""><a class="tabbedTransactions" href="/Transaction/#li1">li1</a></li>
				<li class=""><a class="tabbedTransactions" href="/Transaction/#li2">li2</a></li>
				<li class=""><a class="tabbedTransactions" href="/Transaction/#li3">li3</a></li>
				<li class=""><a class="tabbedTransactions" href="/Transaction/#li4">li4</a></li>
				<li class=""><a class="tabbedTransactions" href="/Transaction/#li5">li5</a></li>
				<li class="current bottomSubNav"><a href="/li6/" class="current bottomSubNav">li6</a></li>
			</ul>
		</li>
	</ul>
</nav>

想到的会起作用(如果我在代码运行时将我的ACTUAL光标悬停在Transaction元素上)(WebElements都是通过xpath找到并传入的,xpath已经过验证一个插件)(驱动程序是WebDriver和类的公共部分)

public void HoverClick(WebElement hover, WebElement click)
{   
    Actions actions = new Actions(driver);
    actions.moveToElement(hover).click(click).build().perform();
}

.moveToElement似乎没有移动到所以因此无法点击。 (甚至没有扩展navBar项目的闪烁)

public void HoverClick(WebElement hover, WebElement click)
{   
    Actions actions = new Actions(driver);
    actions.moveToElement(hover).build().perform();
    actions.click(click).build().perform();
}

有了这个,moveToElement移动到(navBar扩展)但.click(click)失败。离开.perform()的{​​{1}}不会导致行为发生变化。

moveToElement

有了这个,第一次public void HoverClick(WebElement hover, WebElement click) { Actions actions = new Actions(driver); actions.moveToElement(hover).build().perform(); actions.pause(Duration.ofMillis(1000)).build().perform(); actions.click(click).build().perform(); } .pause() - ed就会暂停。第二次(build().perform())没有停顿。

我不知道该怎么做。如上所述,如果我将我的实际鼠标悬停在nav元素上,那么代码执行就好了。请帮帮忙?

1 个答案:

答案 0 :(得分:0)

以下作品:

public void HoverClick(WebElement hover, WebElement click)
{   
    Actions actions = new Actions(driver);
    actions.moveToElement(hover).perform();
    click.click();
}

使用.build().perform()无效。这似乎导致“鼠标”悬停一次,然后再次盘旋并离开。

仅使用.build()根本不起作用(并不惊讶,但想检查#QALife)。原来根本没用。这似乎是Selenium中的一个重要问题......