我写了一个简单的代码,在facebook登录页面输入电子邮件。但是当通过sendKeys输入电子邮件值时,我得到的验证就像“方法sendKeys(String)未定义类型By”。我已经检查了合规版本是1.8。那么这里出了什么问题?以下是代码段:
package SeleniumTests;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class OpenFacebook {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver","geckodriver path");
WebDriver driver=new FirefoxDriver();
driver.get("http:\\facebook.com");
driver.manage().window().maximize();
driver.findElement(By.xpath("//[@id='email']").sendKeys("[email protected]");
}
}
我得到一个选项添加转换为By.xpath作为快速修复。有人可以解释这个的用法,还是有其他解决方案可用
在.sendKeys尝试以下代码之前,代码中缺少结束括号:
driver.findElement(By.xpath("//[@id='email']")).sendKeys("[email protected]");
正如@KoustubhMadkaikar和@AndiCover所提到的那样,尽管添加必要的结束括号即)
将解决当前的问题,但根据最佳实践,您应该为tagName
提供强大的Locator Strategy,您可以使用以下任一解决方案:
xpath
:
driver.findElement(By.xpath("//input[@id='email']")).sendKeys("[email protected]");
cssSelector
:
driver.findElement(By.cssSelector("input#email")).sendKeys("[email protected]");
你错过了关闭圆括号)
,使用:
driver.findElement(By.xpath("//[@id='email']")).sendKeys("[email protected]");