Javascript 在selenium中发送文本警报

Javascript 在selenium中发送文本警报,javascript,selenium,Javascript,Selenium,如何处理包含用户名和密码等文本字段的JavaScript警报?如何在这些字段中输入值 您可以尝试以下方法: driver.switch_to.alert.authenticate('cheese', 'secretGouda') 您可以在控制台上或从该窗口查看文档 >>>从selenium.webdriver.common.alert导入警报 >>>帮助(警报。身份验证) 有关模块selenium.webdriver.common.alert中的方法身份验证的帮助: 身份验证(自我、用户名、密

如何处理包含用户名和密码等文本字段的JavaScript警报?如何在这些字段中输入值

您可以尝试以下方法:

driver.switch_to.alert.authenticate('cheese', 'secretGouda')
您可以在控制台上或从该窗口查看文档

>>>从selenium.webdriver.common.alert导入警报 >>>帮助(警报。身份验证) 有关模块selenium.webdriver.common.alert中的方法身份验证的帮助: 身份验证(自我、用户名、密码)未绑定selenium.webdriver.common.alert.alert方法 将用户名/密码发送到经过身份验证的对话框(与基本HTTP身份验证类似)。 隐式“单击确定” 用法:: driver.switch_to.alert.authenticate('cheese','secretGouda')) :Args: -用户名:在对话框的用户名部分设置的字符串 -密码:在对话框的密码部分设置的字符串 您可以尝试以下方法:

driver.switch_to.alert.authenticate('cheese', 'secretGouda')
您可以在控制台上或从该窗口查看文档

>>>从selenium.webdriver.common.alert导入警报 >>>帮助(警报。身份验证) 有关模块selenium.webdriver.common.alert中的方法身份验证的帮助: 身份验证(自我、用户名、密码)未绑定selenium.webdriver.common.alert.alert方法 将用户名/密码发送到经过身份验证的对话框(与基本HTTP身份验证类似)。 隐式“单击确定” 用法:: driver.switch_to.alert.authenticate('cheese','secretGouda')) :Args: -用户名:在对话框的用户名部分设置的字符串 -密码:在对话框的密码部分设置的字符串
问题是Selenium无法识别身份验证弹出窗口。据我所知,这是硒的限制。使用java Robot操作填写用户名和密码可以克服这个问题

public void handlePopup(){

  //create java robot for keyboard simulations
  Robot rb = new Robot();
  //First set the username value to the system clipboard
  StringSelection username = new StringSelection("your-user-name");
  Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null); 
  // Perform a control+v to paste the content into username field.           
  rb.keyPress(KeyEvent.VK_CONTROL);
  rb.keyPress(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_CONTROL);

  //tab to navigate to password field
  rb.keyPress(KeyEvent.VK_TAB);
  rb.keyRelease(KeyEvent.VK_TAB);
  Thread.sleep(2000);

  //set the password value to the system clipboard
  StringSelection pwd = new StringSelection("your-password");
  Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null);

  // Perform a control+v to paste the content into password field. 
  rb.keyPress(KeyEvent.VK_CONTROL);
  rb.keyPress(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_CONTROL);

  //press enter to login
  rb.keyPress(KeyEvent.VK_ENTER);
  rb.keyRelease(KeyEvent.VK_ENTER);
}

问题是Selenium无法识别身份验证弹出窗口。据我所知,这是硒的限制。使用java Robot操作填写用户名和密码可以克服这个问题

public void handlePopup(){

  //create java robot for keyboard simulations
  Robot rb = new Robot();
  //First set the username value to the system clipboard
  StringSelection username = new StringSelection("your-user-name");
  Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null); 
  // Perform a control+v to paste the content into username field.           
  rb.keyPress(KeyEvent.VK_CONTROL);
  rb.keyPress(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_CONTROL);

  //tab to navigate to password field
  rb.keyPress(KeyEvent.VK_TAB);
  rb.keyRelease(KeyEvent.VK_TAB);
  Thread.sleep(2000);

  //set the password value to the system clipboard
  StringSelection pwd = new StringSelection("your-password");
  Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null);

  // Perform a control+v to paste the content into password field. 
  rb.keyPress(KeyEvent.VK_CONTROL);
  rb.keyPress(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_V);
  rb.keyRelease(KeyEvent.VK_CONTROL);

  //press enter to login
  rb.keyPress(KeyEvent.VK_ENTER);
  rb.keyRelease(KeyEvent.VK_ENTER);
}

已尝试
驱动程序。请切换到\u窗口()
?可能会有帮助。我已更新了答案。请看一看。尝试了
驱动程序。切换到\u window()
?可能会有帮助。我已经更新了答案。看一看。看一看这个。是的,我知道认证方法。但该方法仍然被标记为@Beta。根据我的经验,这种方法在大多数情况下都不能解决问题。我发布的是我们在10多个自动化项目中解决这个问题的方法。看看这个。是的,我知道认证方法。但该方法仍然被标记为@Beta。根据我的经验,这种方法在大多数情况下都不能解决问题。我发布的是我们在10多个自动化项目中解决这个问题的方法。