上面几篇文章讲解了对于PC自动化框架的封装,下面就具体讲解一下怎么用。
先说一下几种定位方式吧
扩展
有疑问的加V了解详情:zx1187463903
- By.tagName()
可以通过元素的标签名称来查找元素,像是
- By.cssSelector()
1.根据tagName
driver.findElement(By.cssSelector(“input”)
2.根据ID
driver.findElement(By.cssSelector(“input#username”));html标签和#id
driver.findElement(By.cssSelector("#username"));只是#id
3.根据className
单一class:driver.findElement(By.cssSelector(".username"));.class
复合class:driver.findElement(By.cssSelector(".username..*"));.classA.classB
4.根据元素属性
1)精准匹配:
[A] driver.findElement(By.cssSelector(“input[name=username]”));属性名=属性值,id,class,等都可写成这种形式
[B] driver.findElement(By.cssSelector(“img[alt]”));存在属性。例如img元素存在alt属性
[C] driver.findElement(By.cssSelector(“input[type=‘submit’][value=‘Login’]”));多属性
2)模糊匹配:(正则表达式匹配属性)
[A] driver.findElement(By.cssSelector(Input[id ^=‘ctrl’]));匹配到id头部 如ctrl_12
[B] driver.findElement(By.cssSelector(Input[id $=‘ctrl’]));匹配到id尾部 如a_ctrl
[C] driver.findElement(By.cssSelector(Input[id *= ‘ctrl’]));匹配到id中间如1_ctrl_1
实战来了!!!各个方法的使用,以及定位方式的使用(这里以某旅游网站为例)
public static void main(String[] args) throws Exception {
/*
// 1:driver:初始化驱动
UserFunction.driver("https://XXXXXXXXXX");
// 2:activate:点击元素
UserFunction.activate(By.className("over"));
// 3:activateByIndex:点击相同属性不同位置的元素
UserFunction.activateByIndex(By.className("over"), 1);
UserFunction.activate(By.className("logo"));
// 4:enterTextIn:输入文本信息
UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
// 5: enterTextInByText:相同属性不同位置的元素输入信息
UserFunction.driver("http://passport.ly.com");
UserFunction.activate(By.id("switchPcLogin"));
UserFunction.enterTextInByIndex(By.tagName("input"), 4,"123");
// 6:selectFromList:选择下拉框的元素
UserFunction.selectFromList(By.name("adultNum"), "3");
// 7:getTextFrom:获取元素的文本信息
String text = UserFunction.getTextFrom(By.className("J_priceS"));
System.out.println(text);
// 8:getTitle:获取网页的标题
String title = UserFunction.getTitle();
System.out.println(title);
// 9:getAttribute:根据元素性质得到另一个属性值
String value = UserFunction.getAttribute(By.className("logo"), "title");
System.out.println(value);
// 10:getCurrentUrl:获取当前页的URL值
String url = UserFunction.getCurrentUrl();
System.out.println(url);
// 14:key_tab:模拟键盘Tab键操作
UserFunction.activate(By.className("over"));
BasicFunction.sleep(3000);// 因为立即预订按钮是已存在的,但是如果资源没有加载出来,点击了立即预订的按钮也无法跳转到订单页
UserFunction.activate(By.cssSelector("span.choose.J-Next"));// 立即预订
UserFunction.activate(By.id("Iname"));
UserFunction.key_tab(5);
// 15:key_button:模拟键盘上下左右键操作
UserFunction.key_button(5, "down");
UserFunction.key_button(3, "up");
// 16:switchWindow:切换窗口
UserFunction.driver("http://www.ly.com");
UserFunction.activate(By.className("logo"));
UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
UserFunction.switchWindow(1);
UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
// 17:isElementExist:判断当前页面是
if (UserFunction.isElementExist(By.className("order-btn"))){
System.out.println("立即预订按钮已加载完成");
}else{
System.out.println("元素不存在");
}
// 18:clear:清除输入框内容
UserFunction.activate(By.className("logo"));
UserFunction.switchWindow(1);
UserFunction.enterTextIn(By.id("pt__search_text"), "1045201");
UserFunction.clear(By.id("pt__search_text"));
// 19:close:关闭当前窗口
UserFunction.activate(By.className("logo"));
UserFunction.close();
// 20:quit:关闭浏览器
UserFunction.activate(By.className("logo"));
UserFunction.quit();
// 21:refresh:刷新页面
UserFunction.refresh();
// 22:screenShot:截图
UserFunction.screenShot(); //判断文件夹是否存在的操作
// 23:screenShotSpecial:异常截图
UserFunction.screenShotSpecial();
// 以登录页为例,几种定位方式
UserFunction.driver("http://passport.ly.com");
//By.id() 通过id属性查找
dr.findElement(By.id("switchPcLogin")).click();
// By.name() 通过name属性查找
dr.findElement(By.id("switchPcLogin")).click();
dr.findElement(By.name("name")).sendKeys("18550502316");
// By.className() 通过class属性查找
dr.findElement(By.className("switch_corner_pc")).click();
// By.linkText() 通过linkText(链接文本精确查找)
dr.findElement(By.linkText("快速注册")).click();
// By.partiallinktext() 链接文本模糊查找
dr.findElement(By.partialLinkText("登录页面")).click();
// By.xpath() 通过xpath路径
dr.findElement(By.xpath("//*[@id='switchPcLogin']")).click();
//UserFunction.activate(By.xpath("//*[@id='switchPcLogin']")); //copy的时候注意单双引号的问题。
// By.cssSelector() 选择器的几种定位方式
// By.tagName() 通过标签来查找
List<WebElement> list=dr.findElements(By.cssSelector("input"));
System.out.println(list.size());
// 2:根据ID
dr.findElement(By.cssSelector("#switchPcLogin")).click();
// 3:根据className
dr.findElement(By.cssSelector(".switch_corner")).click();
dr.findElement(By.cssSelector("")).click(); //复合 立即预定按钮
*/
}
有疑问的加V了解详情:zx1187463903
如果你也搞定了,开心的同时请小编喝个咖啡也极好的呀。