2017-01-11 10 views
0

Я хочу выбрать значение из раскрывающегося меню. Мой код выбирает только первое значение из раскрывающегося меню, и я хочу, чтобы вы нажимали на все значения из раскрывающихся меню и проверяли, загружены ли они с правильной URL-адресом и закладкой заголовка. Я не вижу никакой ошибки и показывает, что тест прошел тест, но не сделал того, что я хотел. Я использую PageObject и PageFactory. Пожалуйста, помогите.Использование Selenium (Java), как выбрать значение из выпадающего меню

Это мой код для первого значения из выпадающего меню:

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> 
+0

У вас есть конкретные причины для использования щелчков мыши в определенных местах? Я думаю, что было бы лучше использовать другие способы нажатия. –

+0

У меня нет особых причин, я не знаю, как написать другой метод. Вы можете мне помочь? –

+0

Можете ли вы поделиться фрагментом HTML выпадающего меню? Потому что есть много разных видов этого. Это важно, поэтому кто-то здесь может сделать решение. –

ответ

0

Вот код для зависания мыши на меню и затем выберите подменю ссылка-

Actions action = new Actions(driver); 
WebElement menu = driver.findElement(By.xpath("//a[contains(.,'Product Category')]")); 
Thread.sleep(2000); 
action.moveToElement(menu).moveToElement(driver.findElement(By.xpath("//a[contains(.,'iMacs')]"))).click().build().perform(); 

Если вы хотите перебрать все подменю в меню, то либо у вас есть чтобы получить все имя меню в массиве строк, а затем передать имя в xpath один на один

Actions action = new Actions(driver); 
String[] submenus = {"Accessories", "iMacs", "iPads"}; 
for(int i=0;i<submenus.length;i++) 
{ 
    WebElement we = driver.findElement(By.xpath("//a[contains(.,'Product Category')]")); 
    Thread.sleep(2000); 
    action.moveToElement(we).moveToElement(driver.findElement(By.xpath("//a[contains(.,'"+submenus[i]+"')]"))).click().build().perform(); 
    Thread.sleep(3000); 
}