2017-08-03 116 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();