2016-07-21 17 views
1

場景:使用單詞'Selenium'搜索Google,然後單擊第一個鏈接。用於在硒中選擇價值的PartialLink文本

我寫了這個代碼如下:

`WebDriver driver = new FirefoxDriver(); 

driver.get("https://www.google.com/"); 


driver.manage().window().maximize(); 



driver.findElement(By.id("lst-ib")).sendKeys("Selenium"); 

List<WebElement> alist = driver.findElements(By.partialLinkText("Selenium")); 

System.out.println(alist.size());` 

,但它給我的大小爲零。爲什麼?

回答

1

實際上,當您要查找部分文本爲Selenium的所有鏈接列表時,由於執行速度較快,所有鏈接均不存在於DOM中。你應該嘗試使用WebDriver等到在DOM如下可見的所有元素: -

WebDriver driver = new FirefoxDriver(); 

driver.get("https://www.google.com/"); 

driver.manage().window().maximize(); 

driver.findElement(By.id("lst-ib")).sendKeys("Selenium"); 
WebDriverWait wait = new WebDriverWait(driver, 10); 

List<WebElement> alist = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.partialLinkText("Selenium"))) 

System.out.println(alist.size()); 

輸出:-13

希望它能幫助... :)

1

你的問題發生,因爲你不等待搜索後。只需稍等片刻,以便瀏覽器可以搜索並顯示結果。使用以下代碼:

driver.findElement(By.id("lst-ib")).sendKeys("Selenium"); 
Thread.sleep(5000); 

雖然這種等待不建議使用。嘗試使用等待使用,直到像:

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("element css path"))); 

你可以通過XPath或ID或類在這裏使用。