Selenium怎样定位虎牙直播登录

来源:互联网 发布:内功真的存在吗 知乎 编辑:程序博客网 时间:2024/06/10 09:05

三、Selenium怎样定位虎牙直播:

        为什么要选择虎牙直播呢?是因为我觉得虎牙直播的前端渲染的比较复杂,有代表性;

        首先我们做一下准备工作,把测试前的代码写好:


import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import java.util.concurrent.TimeUnit;public class HuYa {    public static void main(String[] args) {        WebDriver driver;        System.setProperty("webdriver.firefox.marionette", "C:\\Program Files\\Mozilla Firefox\\firefox.exe");        String Url = "http://www.huya.com/";    //虎牙地址        driver =new FirefoxDriver();        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        driver.get(Url);        driver.manage().window().maximize();        try {            Thread.sleep(3000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

然后手动打开浏览器,打开虎牙:http://www.huya.com/,并点击登录:






driver.findElement(By.xpath(".//*[@id='nav-login']")).click();  //点击登录

然后再返回浏览器:



注意了,本期的重点来了:

如果按照上一篇教的方法,这个框里面的手机号、密码和登录死活都定位不了,这是为什么呢?

让我们看页面源码:




好了,找到原因了,原来这里有个:iframe id="udbsdk_frm_normal",就是它了;

让我么返回代码:


driver.switchTo().frame("udbsdk_frm_normal");   //切换到登录框里面

然后再定位手机号输入框、密码输入框和登陆按钮:




driver.findElement(By.xpath(".//*[@id='m_commonLogin']/div[1]/span/input")).sendKeys("13699999999");//输入手机号driver.findElement(By.xpath(".//*[@id='m_commonLogin']/div[2]/span/input")).sendKeys("abc123");//输入密码driver.findElement(By.xpath(".//*[@id='m_commonLogin']/div[5]/a[1]")).click();//点击登录

好了,再跑一把,成功登录了!

当然了,我这里公布的是假的手机号和密码,

你自己跑的时候用真实的!

附上完整代码:


import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import java.util.concurrent.TimeUnit;public class HuYa {    public static void main(String[] args) {        WebDriver driver;        System.setProperty("webdriver.firefox.marionette", "C:\\Program Files\\Mozilla Firefox\\firefox.exe");        String Url = "http://www.huya.com/";    //虎牙地址        driver =new FirefoxDriver();        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        driver.get(Url);        driver.manage().window().maximize();        try {            Thread.sleep(3000);        } catch (InterruptedException e) {            e.printStackTrace();        }        driver.findElement(By.xpath(".//*[@id='nav-login']")).click();  //点击登录        driver.switchTo().frame("udbsdk_frm_normal");   //切换到登录框里面        driver.findElement(By.xpath(".//*[@id='m_commonLogin']/div[1]/span/input")).sendKeys("13699999999");        //输入手机号        driver.findElement(By.xpath(".//*[@id='m_commonLogin']/div[2]/span/input")).sendKeys("abc123");        //输入密码        driver.findElement(By.xpath(".//*[@id='m_commonLogin']/div[5]/a[1]")).click();        //点击登录        try {            Thread.sleep(5000);        } catch (InterruptedException e) {            e.printStackTrace();        }                driver.quit();    }}




        

原创粉丝点击