使用js点击按钮后webDriver无法获取alert窗口
本帖最后由 涵灵 于 2016-1-19 14:55 编辑测试场景:点击增加按钮,出现弹出框,点击确定。
方式1:
1.点击按钮,调用selenium2的element.click(),没有反应,也不报错。
使用js执行:document.getElementsByName(elementName).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').click();" ;
JavascriptExecutor js_exe = (JavascriptExecutor)driver;
js_exe.executeScript(js);
疑问:使用js调用之后,为什么webdriver就获取不到alert窗口了呢?求解救方案
补充问题:
整个页面的元素可以用driver.findElement(By.name(elementName))找到,并读取其属性,就是变更的操作总是不能实现。
例如:输入框不能sendKeys,按钮不能click...
是不是页面设置了什么东西不能自动化??求解。。。。
备注:手工录入,点击都是没有问题的。
alert需要switch的,你把switchto的代码加上就可以了 joykao 发表于 2016-1-18 16:28
alert需要switch的,你把switchto的代码加上就可以了
我有加switch:
Alert alert = driver.switchTo().alert();
alert.accept();
没加的话,是不会提示:No alert is active 2楼正解:lol 加一下等待时间试一下,可能是由于操作的太快,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(); mehll1213 发表于 2016-1-19 08:51
加一下等待时间试一下,可能是由于操作的太快,alert真的还没有加载出来,用Thread.sleep(2000),或者
WebD ...
试了一下,不是这个原因。
如果是加载慢的话,手工点击按钮后,为什么可以捕获alert窗口。
根本原因就是用js执行点击按钮,和手工返回的结果不一样。 查看下你手工点击与代码执行有什么区别,把相应的过程中执行的是什么动作输出,然后对比下。 清晨一缕阳光 发表于 2016-1-20 11:33
查看下你手工点击与代码执行有什么区别,把相应的过程中执行的是什么动作输出,然后对比下。
如何输出过程中的动作?求指教。
页:
[1]