SeleniumWebDriver和JavaScript更改
我到底是怎么得到这个Javascript方法的SeleniumWebDriver和JavaScript更改,javascript,webdriver,Javascript,Webdriver,我到底是怎么得到这个Javascript方法的 $('#principal_uid').change(function() { if($(this).val().length > 0){ window.location.href = "/switch.html" + "?uid=" + $(this).val(); } else { window.location.href = "/index.html"; 要使用Selenium WebDdriver测试,在该测试中我尝试更改
$('#principal_uid').change(function() {
if($(this).val().length > 0){
window.location.href = "/switch.html" + "?uid=" + $(this).val();
} else {
window.location.href = "/index.html";
要使用Selenium WebDdriver测试,在该测试中我尝试更改字段的值?
问题是该字段有一个默认值,但是Selenium clear()-方法没有清除它,尽管测试正在通过
我试过了
WebElement field =driver.findElement(By.id("principal_uid"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("$('#principal_uid').change");
field.clear();
field.sendKeys("newValue"+Keys.RETURN); //CHRASHED THE TEST WITH ERROR COMMUNICATING REMOTE SERVER ERROR
试着这样做:
js.executeScript("$('#principal_uid').val('%s')".format("newValue"));
这将触发“onchange”事件,并将您重定向到代码中描述的页面
如果未触发事件(尽管应该触发),您可以添加:
js.executeScript("$('#principal_uid').trigger('change')")
你确定它不会在这里崩溃吗代码>?该代码有一个错误。实际上,该javascript具有完全有效的语法,不会引发任何错误。它不会做任何事情,也肯定不是有意的,但它是有效的。我建议使用
triggerHandler()
,因为它更安全,更适合这种情况。阅读。