2017-08-03 71 views
0

我寫的下面的腳本導航到所需的URL,但它不輸入用戶名和密碼的值。這兩個字段的Xpath和css都是正確的。任何想法這裏怎麼了?硒WebDriver找不到WebElements

org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class websiteClass { 

    public static void main(String[] args) { 
     WebDriver driver = new FirefoxDriver(); 
     driver.get("http://opensource.demo.orangehrmlive.com/"); 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

     driver.findElement(By.xpath(".//*[@id='txtUsername']")).sendKeys("Admin"); 
     driver.findElement(By.xpath(".//*[@id='txtPassword']")).sendKeys("admin");  
     driver.findElement(By.xpath(".//*[@id='btnLogin']")).click(); 
    } 

} 

回答

1

與geckodriver 0.18 driver.manage().window().maximize()版本拋出異常(實際上它是一個geckodriver bug)。

除去兩行之後:

driver.manage().window().maximize(); 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

代碼工作正常,我(程序成功登錄到網站與geckodriver)。

另外,還要確保你設置的webdriver系統屬性(WebDriver driver = new FirefoxDriver();前)

System.setProperty("webdriver.gecko.driver", PATH_TO_GECKO_DRIVER); 

我也想你的代碼,而無需任何ChromeDriver變化和它工作正常。

如果您仍有問題,請發佈您的geckodriver版本和異常堆棧跟蹤。

+0

Thankyou Vasily。當我將我的geckodriver版本從0.11更新到0.18時,代碼完美無缺。 – Joe12

0

它在Firefox 43.0和2.51中工作正常,我猜這是Firefox瀏覽器的問題。無論是使用壁虎驅動程序與硒3.3罐或使用Firefox 43.0和2.51罐硒

如果您使用鉻和更新您的chromedriver使用此。對於Firefox,您只需更改setproperty值

System.setProperty("webdriver.chrome.driver", "E:\\software and tools\\chromedriver_win32\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 
      driver.get("http://opensource.demo.orangehrmlive.com/"); 
      driver.manage().window().maximize(); 
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

      driver.findElement(By.xpath(".//*[@id='txtUsername']")).sendKeys("Admin"); 
      driver.findElement(By.xpath(".//*[@id='txtPassword']")).sendKeys("admin");  
      driver.findElement(By.xpath(".//*[@id='btnLogin']")).click(); 

      driver.close();