2013-07-19 3 views
5

다음 코드는 웹 페이지의 autocomlete 상자를 테스트 (왜 자동 입력 자동 완성 옵션을로드하지 않고 수동으로 입력하지) :Selenium을 사용하여 자동 완성 입력 상자를 채우는 방법은 무엇입니까?

public class Test { 

    public static void main(String[] args) throws InterruptedException { 
     System.setProperty("webdriver.chrome.driver","chromedriver\\chromedriver.exe");  
     WebDriver driver = new ChromeDriver(); 
     driver.get("http://www..............com"); 
     driver.switchTo().frame("mainFrame"); 

     WebDriverWait waitst = new WebDriverWait(driver, 120); 
     waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle"))); 

     WebElement sourceTitle = driver.findElement(By.name("sourceTitle")); 
     WebElement small = driver.findElement(By.cssSelector("li#nameExampleSection label + small")); 
     sourceTitle.sendKeys("Times"); 
     Thread.sleep(5000); 
     Actions actions = new Actions(driver); 
     actions.click(small).perform(); 

    } 

} 

하지 않는 이유는 무엇 자동 제안 상자 부하? 중요 :을 입력 해 봅니다. "..........." 수동으로 ... 자동 완성 상자가 완벽하게 잘로드됩니다 !!! 그렇다면 cssSelector이 작동하지 않는 이유는 무엇입니까? 왜 자동 완성 상자가로드되지 않습니까?

어떻게 자동 입력이 자동 완성 옵션을 허용하지 않습니다. 그러나 수동 입력은합니까 ???

추신 : 나는 또한 fireEvent, sendKeys을 시도했지만 아무것도 작동하지 않습니다.

+0

다른 브라우저를 사용해 보았습니다 ??.또한 웹 드라이버 대기 상태에서 0 초 동안 기다리는 이유는 무엇입니까? – Madusudanan

+0

답장을 보내 주셔서 감사합니다. 1) 명시 적 대기에는 문제가 없으며'(driver, 120)'을 사용할 수 있습니다. 페이지가 잘로드됩니다. 이 문제는 "Associated Press, The"가 입력 상자에 들어올 때 발생합니다 ... 수동으로 - 아무런 문제가 없지만 자동으로 진행되므로 간단히 옵션을로드하지 않습니다. 2) 나는 또한 FireFox를 시도했다. – Buras

+0

제목은 매우 유망했으나 sendKeys()가 동일한 텍스트 입력을 수동으로 입력했을 때처럼 자동 완성 드롭 다운 목록을 표시하지 않는다는 사실을 받아 들인 대답이 어떻게 해결하는지 잘 모르겠습니다. 그리고 문제가되는 요소를 조사 할 수있는 실제 URL을 제공하지 않은 이유는 무엇입니까? –

답변

1

나는 당신의 코드를 시험해 보았다. "Associated Press, The"는 "No Match,"소스를 시도하십시오. "만 반환합니다. 그런 다음 코드에서 결과 팝업이 아닌 다음 양식 목록 항목을 클릭하십시오. autosuggest 팝업은 입력 양식 아래에 배치 된 html 페이지의 상단에 동적으로 채워집니다. 다음 코드는 드롭 다운의 첫 번째 옵션을 선택합니다.

@Test 
public void test() throws InterruptedException { 
     WebDriver driver = new ChromeDriver(); 
     driver.get("http://www.lexisnexis.com/hottopics/lnacademic/?verb=sf&sfi=AC00NBGenSrch"); 
     driver.switchTo().frame("mainFrame"); 

     WebDriverWait waitst = new WebDriverWait(driver, 0); 
     waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle"))); 

     WebElement sourceTitle = driver.findElement(By.name("sourceTitle")); 
     sourceTitle.sendKeys("Times"); 
     Thread.sleep(5000); 
     WebElement firstItem = driver.findElement(By.xpath("//*[@class='auto_suggest']/*[@class='title_item']")); 
     firstItem.click(); 
} 
1

이 문제에 대한 해결 방법이 있습니다. 내 문제였다

  • 필드는 다음 셀레늄이 열려 자동 제안 드롭 다운을 왼쪽
  • 일치하는 옵션과 함께 나타납니다 자동 제안 자동 제안 위치 필드에 '만달 루용'입력
    1. 셀레늄 일치하는 옵션을 선택하지 않습니다. 내가 무슨 짓을

    했다 :

     driver.findElement(By.name("fromLocation")).sendKeys("Mandaluyong"); 
         driver.findElement(By.name("fromLocation")).sendKeys(Keys.TAB); 
    

    내가 TAB 키를 누르면하려고 할 때이 때문에 수동 시험에서, 두 가지 시스템에 의해 행해졌 다되어가 :

    1. 이를 시설 자동 제안 드롭 다운에서 일치 옵션을 선택하십시오.
    2. 자동 제안 드롭 다운을 닫습니다.

    희망이 도움이됩니다.

  • 0

    // 자동 채우기 값을 텍스트 상자에 채울 수 있습니다.

    // 6 초 동안 기다리십시오. 자동 값이 삽입되었는지 확인하십시오. thread.sleep (6000L);

    // 자동 채우기 값 driver.findElement (By.name ("txtBox")). clear();

    driver.findElement (By.name ("txtBox")). sendKeys ("value");

    0

    먼저 입력란을 클릭하십시오. 이것은 자동 입력 상자를 트리거 한 다음 sendKeys를 사용하여 필요한 값을 입력합니다.

    +0

    어떻게 할 수 있습니까? – Adam

    +0

    driver.findElement (By.name ("fromLocation")). click(); driver.findElement (By.name ("fromLocation")). sendKeys ("XYZABC"); driver.findElement (By.name ("fromLocation")). sendKeys (Keys.TAB); –