51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4019|回复: 3
打印 上一主题 下一主题

[求助] webdriver无法定位frame中按钮

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-5-31 21:07:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用webdriver录脚本 ,可以定位到frame中的元素,但无法定位到该frame页面的按钮,求指导,弄了好几天,没弄出来。下面把代码贴出来

package com.selenium.test;



import static org.junit.Assert.*;

import org.junit.Test;
import java.util.Set;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

import com.gargoylesoftware.htmlunit.javascript.host.Document;

public class testamar {

     @Test
     public void test() throws InterruptedException{
          WebDriver driver = new FirefoxDriver();
driver.get("http://app.amarsoft.com/ALS745");

             Thread.sleep(5000);

             WebElement username =
driver.findElement(By.className("input_class"));

             username.sendKeys("test11");
             Thread.sleep(5000);

             //WebElement btn =
driver.findElement(By.className("button_submit"));
             WebElement btn = driver.findElement(By.id("btn_submit"));
             btn.click();
             Thread.sleep(10000);





             WebElement link =
driver.findElement(By.xpath("//ul[@id='ASMenuBar_ALS7']/li[2]/a/span[2]"));
             link.click();


             WebElement link2 =
driver.findElement(By.xpath("//ul[@id='ASMenuBar_ALS7']/li[2]/ul/li/a/span[3]"));
             link2.click();
             Thread.sleep(5000);

             driver.switchTo().frame("SecondFrame_");
            //点击新增按钮
             String js = "setTimeout(function(){document.getElementsByClassName('btn_text')[0].click()},100)";
             ((JavascriptExecutor)driver).executeScript(js);
             Thread.sleep(2000);

             Set<String> handlers = driver.getWindowHandles();
             for(String winHandler:handlers){
             driver.switchTo().window(winHandler);
             }


            WebElement close = driver.findElement(By.xpath("//span/a[2]"));
            // close.click();
             //输入新增页面幸免元素值
            driver.switchTo().frame("ObjectList");
            //填写数据
            Select select = new
Select(driver.findElement(By.id("ORGNATURE")));
            select.selectByVisibleText("事业单位");
            Select select2 = new
Select(driver.findElement(By.id("CERTTYPE")));
            select2.selectByVisibleText("营业执照");
            WebElement creditid = driver.findElement(By.id("CERTID"));
            creditid.sendKeys("11223344");
            WebElement recreditid = driver.findElement(By.id("RECERTID"));
            recreditid.sendKeys("11223344");
            Select select3 = new
Select(driver.findElement(By.id("CUSTOMERTYPE")));
            select3.selectByVisibleText("大型企业");
            WebElement indexpiry = driver.findElement(By.id("IDEXPIRY"));
            indexpiry.sendKeys("2016/09/21");
            WebElement cusname = driver.findElement(By.id("CUSTOMERNAME"));
            cusname.sendKeys("nana的客户");
           // 确认按钮,无法定位,报错,unable to locate element;
            WebElement sure =driver.findElement(By.cssSelector("span[clss='btn_text']"));
             sure.click();
             String title = driver.getTitle();
             String currentUrl = driver.getCurrentUrl();
             System.out.println(title+"\n"+currentUrl);

             //driver.quit();
     }

}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:27
  • 签到天数: 2816 天

    连续签到: 4 天

    [LV.Master]测试大本营

    2#
    发表于 2015-6-1 13:44:11 | 只看该作者
    看你代码,'btn_text'是个class;
    改成这样试试WebElement sure =driver.findElement(By.cssSelector("botton.btn_text"));

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜你获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2015-6-2 14:35:25 | 只看该作者
    你好,试过了,还是报一样的错,弹出的是模态窗口,窗口里的字段都可以获取到,就是确认铵钮获取不到,能帮我调试下么,上面代码可以直接运行的,非常感谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2015-6-4 09:09:07 | 只看该作者
    已经解决了,之前一直用XPATH,估计路径写的不对,昨天研究了一下cxxSelector,还是很好用的
       List<WebElement> sure = driver.findElements(By.cssSelector("span.btn_text"));
                   for (WebElement s : sure){
                          
                       
                           if(s.getText().equals("确认"))
                           {
                                   System.out.println("找到确认铵钮");
           
                                   s.click();
                                   Thread.sleep(5000);
                           }
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 07:37 , Processed in 0.068938 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表