0

드롭 다운 메뉴에서 옵션을 선택하고 싶습니다. 여러 가지 방법을 시도했지만 실패했습니다.드롭 다운 메뉴에서 값을 선택하는 방법

나는 노력이 내 오류가

  WebElement element = driver.findElement(By.linkText("Product Category")); 
      Actions action = new Actions(driver); 
      action.moveToElement(element).perform(); 
      WebDriverWait wait = new WebDriverWait (driver, 5); 
      wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("iMacs"))); 
      WebElement subElement = driver.findElement(By.linkText("iMacs")); 
      action.moveToElement(subElement); 
      action.click(); 
      action.perform(); 

입니다 :

WebDriverWait wait = new WebDriverWait (driver, 5); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("iMacs"))); 

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("iMacs"))); 
    waitForElementToBeDisplayed(driver.findElement(By.linkText("iMacs")), 200); 
    WebDriverWait wait = new WebDriverWait(driver, 30); 
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='iMacs']"))); 

이 내 코드입니다 그래서

org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.linkText: iMacs (tried for 5 second(s) with 500 MILLISECONDS interval) 
+0

도움을 받으려면 HTML 스 니펫을 공유하십시오. –

답변

0

당신은 클릭하려고 다음 몇 가지 요소 위로 가져 가면되고, 특정 링크에? 어느 드라이버를 사용하고 있습니까? 이 메뉴가 마우스 오버 후 올바르게 렌더링되는지 실제로 확인합니까? wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("iMacs")));

대신 wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("iMacs")));으로 시도하고는 (그리고 그 경우에 발생 것을 제외)에 실패하는지에

코드는 실패합니다.

그리고 왜 액션 API를 사용하여 클릭을 수행합니까?

+0

같은 오류가 발생했습니다. 나는 그 밖의 무엇을 시도 해야할지 모르기 때문에 이것을 사용합니다. 나는 테스트의 초보자이다. 다른 해결책이 있습니까? –

+0

내 업데이트와이 3 가지 질문을 참조하십시오. 클릭을 위해서는 3 액션 라인 대신'subElement.click()'을 사용할 수 있습니다. – acikojevic

+0

크롬 드라이버를 사용하고 있습니다. 내 테스트는 내가 사용했던 것보다 사용하기를 기다린다. 문제는 때로는 추락 테스트이다. –

0

Chrome에서 코드를 실행하려고 시도했지만 항상 저에게 효과적이었습니다. 아래 그림과 같이 그러나, 때때로, 당신을 위해 실패, 당신은 당신의 코드에서 복구 메커니즘을 넣을 수 있습니다 : 코드 위

WebElement element = driver.findElement(By.linkText("Product Category")); 
Actions action = new Actions(driver); 
action.moveToElement(element).perform(); 
WebDriverWait wait = new WebDriverWait (driver, 5); 
try { 
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("iMacs"))); 
} catch (WebDriverException we) { 
     System.out.println("First attempt to wait for visibility of 'iMacs' failed. Retrying..."); 
     action.moveToElement(driver.findElement(By.linkText("Product Category"))).perform(); 
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("iMacs"))); 
} 
WebElement subElement = driver.findElement(By.linkText("iMacs")); 
action.moveToElement(subElement); 
action.click(); 
action.perform(); 

항상 작동합니다. 추가 문의 사항이 있으면 알려 주시기 바랍니다.

+0

드롭 다운 메뉴를 클릭 할 필요가 없습니다. 메뉴를 이동해야합니다. 이 사이트 테스트 : http://store.demoqa.com/. –

+0

수정 된 코드를 사용해보고 문제가 해결되면 알려주십시오. – Mahipal

0

sendkeys 옵션도 확인하십시오. 귀하의 코드에서 도움이 될 수 있습니다.

driver.findElement(By.xpath("code']")).sendKeys("testdata");