一、单个元素定位:
以百度查询为例,如图:
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 = newActions(driver);2 action.clickAndHold(driver.findElement(By.linkText("设置"))).perform();
代码:
1 packagese_11;2
3 importorg.openqa.selenium.By;4 importorg.openqa.selenium.WebDriver;5 importorg.openqa.selenium.firefox.FirefoxDriver;6 importorg.openqa.selenium.interactions.Actions;7
8 public classfuHe_05 {9 public static void main(String[] args) throwsInterruptedException{10 //创建驱动
11 System.setProperty("webdriver.gecko.driver", "C:\\ProgramFiles\\Mozilla Firefox\\geckodriver.exe");12 WebDriver driver = newFirefoxDriver();13 //输入网址
14 driver.get("http://www.baidu.com");15 //鼠标悬停
16 Actions action = newActions(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
31 }