51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3709|回复: 7
打印 上一主题 下一主题

使用js点击按钮后webDriver无法获取alert窗口

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-1-18 16:09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 涵灵 于 2016-1-19 14:55 编辑

测试场景:点击增加按钮,出现弹出框,点击确定。
方式1:
1.点击按钮,调用selenium2的element.click(),没有反应,也不报错。
使用js执行:document.getElementsByName(elementName)[0].click(); 可行。
2.但是提示:No alert is active

方式2:
1.手工点击按钮;
2.webdriver可获取alert窗口,执行accept

按钮源码如下:
<input name="addbutton" class="cssButton" type="button" value="增加"/>

JS调用代码:
String js = "document.getElementsByName('addbutton')[0].click();" ;
JavascriptExecutor js_exe = (JavascriptExecutor)driver;  
js_exe.executeScript(js);  

疑问:使用js调用之后,为什么webdriver就获取不到alert窗口了呢?求解救方案


补充问题:
整个页面的元素可以用driver.findElement(By.name(elementName))找到,并读取其属性,就是变更的操作总是不能实现。
例如:输入框不能sendKeys,按钮不能click...
是不是页面设置了什么东西不能自动化??求解。。。。
备注:手工录入,点击都是没有问题的。

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

使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    2#
    发表于 2016-1-18 16:28:58 | 只看该作者
    alert需要switch的,你把switchto的代码加上就可以了

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2016-1-18 16:35:17 | 只看该作者
    joykao 发表于 2016-1-18 16:28
    alert需要switch的,你把switchto的代码加上就可以了

    我有加switch:
    Alert alert = driver.switchTo().alert();               
    alert.accept();

    没加的话,是不会提示:No alert is active
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-9-29 14:29
  • 签到天数: 142 天

    连续签到: 1 天

    [LV.7]测试师长

    5#
    发表于 2016-1-19 08:51:33 | 只看该作者
    加一下等待时间试一下,可能是由于操作的太快,alert真的还没有加载出来,用Thread.sleep(2000),或者
    WebDriverWait wait = new WebDriverWait(driver, 10);
                    wait.until(new ExpectedCondition<WebElement>() {
                            @Override
                            public WebElement apply(WebDriver d) {
                                    return d.findElement(By.id("alertid"));
                            }
                    }).click();
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2016-1-19 11:41:01 | 只看该作者
    mehll1213 发表于 2016-1-19 08:51
    加一下等待时间试一下,可能是由于操作的太快,alert真的还没有加载出来,用Thread.sleep(2000),或者
    WebD ...

    试了一下,不是这个原因。
    如果是加载慢的话,手工点击按钮后,为什么可以捕获alert窗口。

    根本原因就是用js执行点击按钮,和手工返回的结果不一样。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-1 14:56
  • 签到天数: 1182 天

    连续签到: 1 天

    [LV.10]测试总司令

    7#
    发表于 2016-1-20 11:33:19 | 只看该作者
    查看下你手工点击与代码执行有什么区别,把相应的过程中执行的是什么动作输出,然后对比下。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2016-1-25 09:27:57 | 只看该作者
    清晨一缕阳光 发表于 2016-1-20 11:33
    查看下你手工点击与代码执行有什么区别,把相应的过程中执行的是什么动作输出,然后对比下。

    如何输出过程中的动作?求指教。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-13 20:48 , Processed in 0.072536 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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