Selenium_WebDriver下拉框练习_Java

下拉选择框是常见的WEB页面元素,一般的下拉框tagName为Select,还是以某财BBS为例,它的下拉框源码如下所示,这个下拉框一开始只显示省份选择,选择完之后才会显示属于该省的城市的选择框。

<select id="resideprovince" class="ps" tabindex="1" onchange="showdistrict(‘residecitybox‘, [‘resideprovince‘, ‘residecity‘, ‘residedist‘, ‘residecommunity‘], 4, 1, ‘reside‘)" name="resideprovince">
<option value="">-省份-</option>
<option value="北京市" did="1">北京市</option>
<option value="天津市" did="2">天津市</option>
<option value="河北省" did="3">河北省</option>
<option value="山西省" did="4">山西省</option>
<option value="内蒙古自治区" did="5">内蒙古自治区</option>
<option value="辽宁省" did="6">辽宁省</option>
<option value="吉林省" did="7">吉林省</option>
<option value="黑龙江省" did="8">黑龙江省</option>

一般来说,有两种方式可以操作这种标准的下拉框:

//用普通定位+click方式处理下拉框
 dr.findElement(By.xpath("//select[@id=‘resideprovince‘]/option[@value=‘浙江省‘]")).click();
//等待两秒,让页面刷新,显示出城市下拉框
Thread.sleep(2000);    dr.findElement(By.xpath("//select[@id=‘residecity‘]/option[@value=‘杭州市‘]")).click();
//用Select方式
Select sProvince = new Select(dr.findElement(By.xpath("//select[@id=‘resideprovince‘]")));
sProvince.selectByValue("浙江省");
Thread.sleep(2000);
Select sCity = new Select(dr.findElement(By.xpath("//select[@id=‘residecity‘]")));
        sCity.selectByValue("杭州市");

以下代码实现功能如下:

  1. 登录BBS
  2. 打开子版块
  3. 关闭左侧导航栏并窗口最大化
  4. 模拟鼠标移动选择搜索条件
  5. 输入关键字搜索
  6. 切换窗口到搜索结果页面
  7. 操作下拉框搜索同城用户
  8. 格式化输出搜索结果

代码块:

package pkg_Selector;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;

import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

/**
 * Created by Sophie on 15/7/6.
 */
public class Selector {
    private WebDriver dr;
    private String url;
    private String account;
    private String pwd;

    public Selector() {
        this.url = "https://www.wacai.com/user/user.action?url=http%3A%2F%2Fbbs.wacai.com%2Fportal.php";
        Scanner input = new Scanner(System.in);
        System.out.println("Please input the account");
        this.account = input.next();
        System.out.println("Please input the password");
        this.pwd = input.next();
        this.dr = new FirefoxDriver();
    }

    public void login( ) throws Exception {
        //登录
        dr.get(url);
        dr.findElement(By.id("account")).clear();
        dr.findElement(By.id("account")).sendKeys(account);
        dr.findElement(By.id("pwd")).clear();
        dr.findElement(By.id("pwd")).sendKeys(pwd);
        dr.findElement(By.id("login-btn")).click();
    }

    public void switchWindow() throws Exception {
        //打开理财规划子版块
        String a = dr.findElement(By.linkText("理财规划")).getAttribute("href");
        //直接用WebDriver.get()方式打开页面,浏览器不会新开页面,省得切换窗口
        dr.get(a);
        dr.manage().window().maximize();
        //然后关闭左侧导航栏
        dr.findElement(By.cssSelector("a.comiis_left_closes")).click();
    }

    public void mouseMove() throws Exception {

        //点开搜索类型下拉框,将鼠标移动到用户上并选择
        Actions act = new Actions(dr);
        WebElement dropDown = dr.findElement(By.cssSelector("a.showmenu.xg1"));
        WebElement user = dr.findElement(By.cssSelector("ul#comiis_twtsc_type_menu>li>a[rel=‘user‘]"));
        act.click(dropDown).perform();
        act.moveToElement(user).click().perform();
        act.moveByOffset(20, 30).click().perform();
    }

    public void search() throws Exception {
        //找到搜索输入框,并输入关键字,然后点击搜索按钮
        WebElement input = dr.findElement(By.id("comiis_twtsc_txt"));
        input.clear();
        input.sendKeys("周杰伦");
        dr.findElement(By.id("comiis_twtsc_btn")).click();//Click之后FireFox新开了一个页面

        //用WindowHandle+页面title来切换dr至我们想要的窗口
        String currentWindow = dr.getWindowHandle();
        Set<String> handles = dr.getWindowHandles();
        //System.out.println(handles.size());
        Iterator h = handles.iterator();
        while (h.hasNext()) {
            dr = dr.switchTo().window((String) h.next());
            //System.out.println(dr.getTitle());
            if (dr.getTitle().equals("查找好友 - 挖财社区"))
                break;
        }
    }

    public WebDriver select() throws InterruptedException {
        dr.findElement(By.cssSelector("html>body#nv_home.pg_spacecp.sour>div#wp.wp.cl>div#ct.ct2_a.wp.cl>div.mn>div.bm.bw0>ul.tb.cl>li:nth-child(2)>a")).click();
        /*用普通定位+click方式处理下拉框
        dr.findElement(By.xpath("//select[@id=‘resideprovince‘]/option[@value=‘浙江省‘]")).click();
        Thread.sleep(2000);
        dr.findElement(By.xpath("//select[@id=‘residecity‘]/option[@value=‘杭州市‘]")).click();
        */
        //用Select方式
        Select sProvince = new Select(dr.findElement(By.xpath("//select[@id=‘resideprovince‘]")));
        sProvince.selectByValue("浙江省");
        Thread.sleep(2000);
        Select sCity = new Select(dr.findElement(By.xpath("//select[@id=‘residecity‘]")));
        sCity.selectByValue("杭州市");
        dr.findElement(By.cssSelector("button.pn")).click();
        return dr;
    }

    public void tearDown(WebDriver dr) throws Exception {
        dr.quit();
    }
    public static void main(String[] args) throws Exception {
        Selector s = new Selector();
        s.login();
        s.switchWindow();
        s.mouseMove();
        s.search();
        WebDriver selectPage = s.select();
        //xpath模糊查找
        List<WebElement> searchResult = selectPage.findElements(By.cssSelector("li.bbda.cl"));
        System.out.println("搜索到" + searchResult.size() + "个同城用户,他们是:");
        System.out.printf("%-20s %-20s %-20s\n", "用户名", "用户等级", "用户积分");
        String userName;
        String userLevel;
        String userMark = "";
        String[] sArray;
        for (int i = 0; i < searchResult.size(); i++) {
            sArray = searchResult.get(i).findElement(By.cssSelector("li>p")).getText().split(" ");
            if (sArray.length < 2)
                userMark = "0";
            else
                userMark = sArray[3];
            userLevel = sArray[0];
            userName = searchResult.get(i).findElement(By.cssSelector("h4>a")).getText();
            System.out.printf("%-20s %-20s %-20s\n",userName,userLevel,userMark);
        }
    }
}

学的越多,越觉得自己懂得少~加油努力准备啊~

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-28 00:07:19

Selenium_WebDriver下拉框练习_Java的相关文章

读取mysql中的特定列值放入页面的下拉框中

1.使用的技术:JSP,Spring JDBC(Mapper) 2.代码 2.1 接口 public interface IMeetingRoomDao { public List<Mrcap> selectCap(); public List<Mrfloor> selectFloor(); } 2.2 实现类 @Override public List<Mrcap> selectCap() { List<Mrcap> caplist = new Array

自建List&lt;&gt;绑定ComboBox下拉框实现省市联动

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace _04省市联动 { public partial cl

【峰回路转】Excel技巧百例 06.设置下拉框

如何才能在Excel中完成一个如下图所示的下拉框呢? 1.首先鼠标选中B2单元格 2.点击上方的"数据"中的"数据验证"下方的小三角,然后点击浮层中的第一项:数据验证 3.在弹出的窗口中,选择"序列",在来源中输入:请选择,优,良,中,差,点击[确认]. 这样一个下拉框,我们就做好了. 版权声明:本文为博主原创文章,未经博主允许不得转载.

struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input

原文地址:struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input jsp页面 1     function dosearch() {2         if ($("#textValue").val() == "") {3                 $("#errortip").html("<font color='#FF0000'>请输入查询内容</font>")

选择下拉框是如何取选项的值?

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>select</title> <script type="text/javascript"> </script> </head> <body id="body&

vue.js实现单选框、复选框和下拉框

Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势.下边以单选框.复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式. 一.单选框 在传统的HTML中实现单选框的方法如下: <div id="app"> <input type="radio" name="gender" value="man" id="man"/><label

jQuery之双下拉框

双下拉框要实现的效果,实际上就是左边下拉选择框里的内容,可以添加到右边,而右边同理.写了个简单的例子,来说明一下. 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <!DOCTYPEhtml> <html> <head> <title>jq

angularjs下拉框空白

搜索angularjs下拉框空白,可以出现很多解决方案,但是对于静态字段来说,网上目前还没有找到解决方案,如下: 1 <select class="form-control" ng-model="UserState" 2 ng-init="UserState=0"> 3 <option value="-1">选择状态</option> 4 <option value="0&q

select下拉框的样式在浏览器上的兼容问题

最近项目中遇到了自定义下拉框的默认样式在谷歌,火狐,IE上显示不同的问题. 左侧图片就是重写的样式,下拉框的右侧三角是选用的bootstrap里面的图片,通过绝对定位放过去的. css: select { /*Chrome同Firefox与IE里面的右侧三角显示的样式不同*/ border: solid 1px #ddd; /*将默认的select选择框样式清除*/ appearance:none; -moz-appearance:none; -webkit-appearance:none; p