2014-11-10 2 views
0

amazon.in에서 submneu를 클릭하려고합니다. 메인 메뉴를 확장 할 수 있습니다. 하위 메뉴는 클릭 할 수 없습니다. 나는 두 가지 방법을 시도했다. 하지만 그 오류를 보여줍니다.Selenium webdriver- 하위 메뉴를 클릭 할 수 없습니다 - amazon.in

메일 카테고리 html 코드 :

<li class="nav_pop_li nav_cat nav_divider_before" id="nav_cat_2">Books</li> 

하위 범주 HTML

<a href="/Books/b/ref=nav_shopall_books_all?ie=UTF8&amp;node=976389031" class="nav_a nav_item">All Books</a> 

내가 사용하는 다음과 같은 방법

방법 1

driver.get("http://amazon.in"); 
    driver.manage().window().maximize(); 
    Actions actions = new Actions(driver); 
      WebElement moveonmenu = driver.findElement(By.xpath("//li[@id='nav_cat_2']")); 
      actions.moveToElement(moveonmenu).moveToElement(driver.findElement(By.xpath("//a[@class='nav_a nav_item']"))).click().perform(); 

방법 2

driver.get("http://amazon.in"); 
     driver.manage().window().maximize(); 
    //locate the menu to hover over using its xpath 
      WebElement menu = driver.findElement(By.xpath("//li[@id='nav_cat_2']")); 

      //Initiate mouse action using Actions class 
      Actions builder = new Actions(driver);  

      // move the mouse to the earlier identified menu option 
      builder.moveToElement(menu).build().perform(); 

      // wait for max of 5 seconds before proceeding. This allows sub menu appears properly before trying to click on it 
      WebDriverWait wait = new WebDriverWait(driver, 5); 
      wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[@class='nav_a nav_item']"))); // until this submenu is found 

      //identify menu option from the resulting menu display and click 
      WebElement menuOption = driver.findElement(By.xpath("//a[@class='nav_a nav_item']")); 
      menuOption.click(); 

왜 작동하지 않는지 알려주세요. "방법 1"에서

답변

1

이 유혹에 문제가 있었다 것 같아요. "Main Category"요소를 클릭하기 만하면됩니다.

방법 2 ""은 "Main Category"의 호버링이 올바르게 발생하고 있습니다. 문제는 "하위 카테고리"을 클릭하기로 선택한 xpath에서만 발생했습니다. xpath는 실제로 여러 요소와 연관됩니다. 따라서 코드가 실패했습니다.

그냥 방법 2에 다음 코드를 교체, 그것은 작동합니다 -

wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//a[@class='nav_a nav_item' and .=\"All Books\"]"))); 

WebElement menuOption = driver.findElement(By.xpath("//a[@class='nav_a nav_item' and .=\"All Books\"]")); 

참고 : -를 위, 나는 모든 사용했다 책을 클릭 할 텍스트로 사용하십시오.
(정확하게 웹 페이지에 표시되는 내용과 일치해야합니다이 텍스트. ) 유사
, 당신은 모든 책은 베스트 셀러 "와 같은 다른 텍스트와
는, 새로운 & 사전 주문 등 자료 을 대체 할 수 "