元素定位可以大概分为八重一般情况下常用的就是by.id、by.name、by.classname,如果需要定位的元素中没有这几个可以选择其他方式的定位:
By.id(id) //(有时元素中id是会变化的,可以刷新页面,如果发现每次的id都不一样则说明id不唯一)
By.name(name)
By.className(className))
By.tagName(name) //通过标签定位,适用于层级定位
By.cssSelector(selector) //如果没有id、name、clssname,我们建议使用这种方式。适用于web端
By.xpath(xpathExpression) //和cssSelector相类似,他适用于移动端。
By.linkText(linkText) //适用于链接类的元素,即<a>标签, 包含herf属性的元素
By.partialLinkText(linkText) //适用于链接类的元素,模糊匹配,即包含herf属性的元素
一个简单的在百度中通过id来定位元素,来搜索selenium的小代码:
public class TestLink {
private WebDriver driver;
private String baseUrl;
@Before
public void setUp() throws Exception {
driver = new ChromeDriver();
baseUrl = "https://www.baidu.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testUntitled() throws Exception {
driver.get(baseUrl);
driver.findElement(By.id("kw")).sendKeys("selenium");
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
}
@After
public void tearDown() throws Exception {
driver.close();
}