【发布时间】:2017-01-11 15:11:40
【问题描述】:
我想从下拉菜单中选择一个值。我的代码仅从下拉菜单中选择第一个值,我希望您单击下拉菜单中的所有值并检查它们是否手动加载了正确的 URL 地址和标题选项卡。我没有看到任何错误,并告诉我测试通过了测试,但没有达到我想要的效果。我使用 PageObject 和 PageFactory。 请帮忙。
这是下拉菜单中第一个值的代码:
public void clickOnAccessories(){
WebElement element=driver.findElement(By.xpath("//a[text()='Product Category']"));
String mouseOver = "var evObj = document.createEvent('MouseEvents');" +
"evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
"arguments[0].dispatchEvent(evObj);";
((JavascriptExecutor)driver).executeScript(mouseOver, element);
waitForElementToBeDisplayed(driver.findElement(By.xpath("//*[text()='Accessories']")), 500);
Assert.assertTrue(driver.getCurrentUrl().equals("http://store.demoqa.com/products-page/product-category/accessories/"));
Assert.assertTrue(driver.getTitle().contains("Accessories"));
}
这是我的 HTML 代码:
<li id="menu-item-33" class="menu-item menu-item-type-taxonomy menu-item-object-wpsc_product_category menu-item-has-children menu-item-33 has_children">
<span class="before"> </span>
<a href="http://store.demoqa.com/products-page/product-category/">
<span></span>
Product Category
</a>
<ul class="sub-menu" style="display: none;">
<li id="menu-item-34" class="menu-item menu-item-type-taxonomy menu-item-object-wpsc_product_category menu-item-34">
<span class="before"> </span>
<a href="http://store.demoqa.com/products-page/product-category/accessories/" style="padding-left: 10px;">
<span></span>
Accessories
</a>
</li>
<li id="menu-item-35" class="menu-item menu-item-type-taxonomy menu-item-object-wpsc_product_category menu-item-35">
<span class="before"> </span>
<a href="http://store.demoqa.com/products-page/product-category/imacs/" style="padding-left: 10px;">
<span></span>
iMacs
</a>
</li>
【问题讨论】:
-
您是否有特定原因将鼠标单击用作特定位置?我认为通常使用其他点击方法会更好。
-
我没有特别的原因,我不知道怎么写其他方法。你能帮帮我吗?
-
可以分享下拉菜单的 HTML sn-p 吗?因为有很多不同的种类。这很重要,所以这里有人可以提出解决方案。
-
我添加了 HTML 代码。
标签: selenium mouseover pageobjects mousehover