SeleniumWebDriver和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测试,在该测试中我尝试更改

我到底是怎么得到这个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测试,在该测试中我尝试更改字段的值? 问题是该字段有一个默认值,但是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()
,因为它更安全,更适合这种情况。阅读。