一、单个元素定位:
以百度查询为例,如图:
1.id定位,findElement(By.id(" "))
driver.findElement(By.id("kw")).sendKeys("新闻");
2.name定位,findElement(By.name(" "))
driver.findElement(By.name("wd")).sendKeys("新闻");
3. className定位,findElement(By.className(" "))
driver.findElement(By.className("s_ipt")).sendKeys("新闻");
4. xpath定位,findElement(By.xpath(" "))
driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("新闻");
5. cssSelector定位,findElement(By.cssSelector(" "))
driver.findElement(By.cssSelector("#kw")).sendKeys("新闻");
6. tagName定位,findElement(By.tagName("input"))
driver.findElement(By.tagName("input")).sendKeys("新闻");
注:此种方法一般是用来定位一组元素的,单个写一般都会报错;
7. linkText定位,findElement(By.linkText(" "))
driver.findElement(By.linkText("地图")).click();
注:此种方法是专门用来定位文本链接的;
8. partialLinkText定位,findElement(By.partialLinkText(" "))
driver.findElement(By.partialLinkText("图")).click();
注:此种方法是用来模糊定位文本链接的;
定位一组元素
driver.findElements(By.name("SL")).get(n).click();
注:唯一区别就是findElements,以及具体的哪个元素get(n),其他的和单个定位一致;
即元素定位的方式就是单个定位的方式,可以用name、id等;get(n)其中n是从0开始;
鼠标悬停
1 Actions action = new Actions(driver); 2 action.clickAndHold(driver.findElement(By.linkText("设置"))).perform();
代码:
1 package se_11; 2 3 import org.openqa.selenium.By; 4 import org.openqa.selenium.WebDriver; 5 import org.openqa.selenium.firefox.FirefoxDriver; 6 import org.openqa.selenium.interactions.Actions; 7 8 public class fuHe_05 { 9 public static void main(String[] args) throws InterruptedException{ 10 //创建驱动 11 System.setProperty("webdriver.gecko.driver", "C:\\ProgramFiles\\Mozilla Firefox\\geckodriver.exe"); 12 WebDriver driver = new FirefoxDriver(); 13 //输入网址 14 driver.get("http://www.baidu.com"); 15 //鼠标悬停 16 Actions action = new Actions(driver); 17 action.clickAndHold(driver.findElement(By.linkText("设置"))).perform(); 18 //定位 19 driver.findElement(By.linkText("搜索设置")).click(); 20 Thread.sleep(1000); 21 //定位组元素 22 driver.findElements(By.name("SL")).get(1).click(); 23 int num = driver.findElements(By.name("SL")).size(); 24 for(int i=0;i<num;i++){ 25 driver.findElements(By.name("SL")).get(i).click(); 26 } 27 Thread.sleep(1000); 28 driver.close(); 29 } 30 31 }