如何在Selenium中处理身份验证弹出窗口?
请告诉我验证弹出窗口设置用户名和密码的代码如何在Selenium中处理身份验证弹出窗口?,selenium,selenium-webdriver,Selenium,Selenium Webdriver,请告诉我验证弹出窗口设置用户名和密码的代码 System.setProperty("webdriver.chrome.driver","Driver//chromedriver.exe"); WebDriver driver=new ChromeDriver(); driver.get("http://admin3-dev.ca.primus"); WebDriverWait wait = new WebDriverWait(driver, 10); Alert alert =
System.setProperty("webdriver.chrome.driver","Driver//chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://admin3-dev.ca.primus");
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("nsingh","Primus01"));
在上述代码的验证弹出窗口中未传递用户名和密码。请告诉我如何单击登录按钮。我认为您必须使用Robot才能添加此类
class SmartRobot extends Robot {
public SmartRobot() throws AWTException {
super();
}
public void pasteClipboard() {
keyPress(KeyEvent.VK_CONTROL);
keyPress(KeyEvent.VK_V);
delay(50);
keyRelease(KeyEvent.VK_V);
keyRelease(KeyEvent.VK_CONTROL);
}
public void type(String text) {
writeToClipboard(text);
pasteClipboard();
}
private void writeToClipboard(String s) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = new StringSelection(s);
clipboard.setContents(transferable, null);
}
}
在你的代码中改变这个
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("nsingh","Primus01"));
由此
driver.switchTo().alert();
SmartRobot robot = new SmartRobot();
robot.type(USERNAME);
robot.keyPress(KeyEvent.VK_TAB);
robot.type(PASSWORD);
robot.keyPress(KeyEvent.VK_ENTER);
我认为你必须使用机器人,你可以添加这个类
class SmartRobot extends Robot {
public SmartRobot() throws AWTException {
super();
}
public void pasteClipboard() {
keyPress(KeyEvent.VK_CONTROL);
keyPress(KeyEvent.VK_V);
delay(50);
keyRelease(KeyEvent.VK_V);
keyRelease(KeyEvent.VK_CONTROL);
}
public void type(String text) {
writeToClipboard(text);
pasteClipboard();
}
private void writeToClipboard(String s) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = new StringSelection(s);
clipboard.setContents(transferable, null);
}
}
在你的代码中改变这个
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("nsingh","Primus01"));
由此
driver.switchTo().alert();
SmartRobot robot = new SmartRobot();
robot.type(USERNAME);
robot.keyPress(KeyEvent.VK_TAB);
robot.type(PASSWORD);
robot.keyPress(KeyEvent.VK_ENTER);
您可以直接在URL本身中传递用户名和密码,如下所示:-
driver.get("http://UserName:Password@yoururl.com");
请参阅以下链接:-
希望它能帮助您:)您可以直接在URL中传递用户名和密码,如下所示:-
driver.get("http://UserName:Password@yoururl.com");
请参阅以下链接:-
希望它能帮助你:)它在
chrome
中工作,仍然在寻找firefox
浏览器
System.setProperty("webdriver.chrome.driver","Driver//chromedriver.exe");
driver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://admin3-dev.magma.ca");
Robot rb =new Robot();
rb.keyPress(KeyEvent.VK_P);
rb.keyRelease(KeyEvent.VK_P);
rb.keyPress(KeyEvent.VK_C);
rb.keyRelease(KeyEvent.VK_C);
rb.keyPress(KeyEvent.VK_H);
rb.keyRelease(KeyEvent.VK_H);
rb.keyPress(KeyEvent.VK_A);
rb.keyRelease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_L);
rb.keyRelease(KeyEvent.VK_L);
rb.keyPress(KeyEvent.VK_L);
rb.keyRelease(KeyEvent.VK_L);
rb.keyPress(KeyEvent.VK_A);
rb.keyRelease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyPress(KeyEvent.VK_CAPS_LOCK);
rb.keyRelease(KeyEvent.VK_CAPS_LOCK);
rb.keyPress(KeyEvent.VK_A);
rb.keyRelease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_CAPS_LOCK);
rb.keyRelease(KeyEvent.VK_CAPS_LOCK);
rb.keyPress(KeyEvent.VK_M);
rb.keyRelease(KeyEvent.VK_M);
rb.keyPress(KeyEvent.VK_M);
rb.keyRelease(KeyEvent.VK_M);
rb.keyPress(KeyEvent.VK_U);
rb.keyRelease(KeyEvent.VK_U);
rb.keyPress(KeyEvent.VK_L);
rb.keyRelease(KeyEvent.VK_L);
rb.keyPress(KeyEvent.VK_U);
rb.keyRelease(KeyEvent.VK_U);
rb.keyPress(KeyEvent.VK_1);
rb.keyRelease(KeyEvent.VK_1);
rb.keyPress(KeyEvent.VK_2);
rb.keyRelease(KeyEvent.VK_2);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyPress(KeyEvent.VK_ENTER);`enter code here`
rb.keyRelease(KeyEvent.VK_ENTER);
它在
chrome
中工作,仍然在寻找firefox
浏览器
System.setProperty("webdriver.chrome.driver","Driver//chromedriver.exe");
driver=new ChromeDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get("http://admin3-dev.magma.ca");
Robot rb =new Robot();
rb.keyPress(KeyEvent.VK_P);
rb.keyRelease(KeyEvent.VK_P);
rb.keyPress(KeyEvent.VK_C);
rb.keyRelease(KeyEvent.VK_C);
rb.keyPress(KeyEvent.VK_H);
rb.keyRelease(KeyEvent.VK_H);
rb.keyPress(KeyEvent.VK_A);
rb.keyRelease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_L);
rb.keyRelease(KeyEvent.VK_L);
rb.keyPress(KeyEvent.VK_L);
rb.keyRelease(KeyEvent.VK_L);
rb.keyPress(KeyEvent.VK_A);
rb.keyRelease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyPress(KeyEvent.VK_CAPS_LOCK);
rb.keyRelease(KeyEvent.VK_CAPS_LOCK);
rb.keyPress(KeyEvent.VK_A);
rb.keyRelease(KeyEvent.VK_A);
rb.keyPress(KeyEvent.VK_CAPS_LOCK);
rb.keyRelease(KeyEvent.VK_CAPS_LOCK);
rb.keyPress(KeyEvent.VK_M);
rb.keyRelease(KeyEvent.VK_M);
rb.keyPress(KeyEvent.VK_M);
rb.keyRelease(KeyEvent.VK_M);
rb.keyPress(KeyEvent.VK_U);
rb.keyRelease(KeyEvent.VK_U);
rb.keyPress(KeyEvent.VK_L);
rb.keyRelease(KeyEvent.VK_L);
rb.keyPress(KeyEvent.VK_U);
rb.keyRelease(KeyEvent.VK_U);
rb.keyPress(KeyEvent.VK_1);
rb.keyRelease(KeyEvent.VK_1);
rb.keyPress(KeyEvent.VK_2);
rb.keyRelease(KeyEvent.VK_2);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyPress(KeyEvent.VK_ENTER);`enter code here`
rb.keyRelease(KeyEvent.VK_ENTER);
我在项目中遇到了身份验证代理弹出问题。所以我尝试了下面的解决方案,效果很好。 当我们在安全环境中从SeleniumWeb驱动程序运行脚本时,需要执行以下设置来处理身份验证代理 首先,您需要了解以下详细信息
- network.proxy.autoconfig\u url(示例:)
- network.proxy.http(示例:abc proxy.com)
- network.proxy.http_端口(示例:8080)
我在项目中遇到了身份验证代理弹出问题。所以我尝试了下面的解决方案,效果很好。 当我们在安全环境中从SeleniumWeb驱动程序运行脚本时,需要执行以下设置来处理身份验证代理 首先,您需要了解以下详细信息
- network.proxy.autoconfig\u url(示例:)
- network.proxy.http(示例:abc proxy.com)
- network.proxy.http_端口(示例:8080)
不同的浏览器有不同的解决方案,但很少有编程解决方案适用于所有浏览器
- 某些Web驱动程序(Chrome、Firefox)可以使用用户:pass@siteURL中的语法。有些人会在注册表黑客攻击后接受这种语法,但会遇到稳定性问题(IE)
- 某些Web驱动程序允许您在其配置文件(Firefox)中设置首选项
- 某些Web驱动程序允许您使用扩展(Chrome)设置和修改其行为
- 某些Web驱动程序允许您通过
(仅在撰写本文时使用IE)警报与身份验证对话框进行交互。身份验证使用
- 在撰写本文时,某些浏览器的Web驱动程序无法执行上述任何操作(Edge)
另请参阅与之链接的答案。对于不同的浏览器,有不同的解决方案,但很少有编程解决方案适用于所有浏览器
- 某些Web驱动程序(Chrome、Firefox)可以使用用户:pass@siteURL中的语法。有些人会在注册表黑客攻击后接受这种语法,但会遇到稳定性问题(IE)
- 某些Web驱动程序允许您在其配置文件(Firefox)中设置首选项
- 某些Web驱动程序允许您使用扩展(Chrome)设置和修改其行为
- 某些Web驱动程序允许您通过
(仅在撰写本文时使用IE)警报与身份验证对话框进行交互。身份验证使用
- 在撰写本文时,某些浏览器的Web驱动程序无法执行上述任何操作(Edge)
另请参阅与此链接的答案。如果是新窗口或iframe,您可能必须切换到警报窗口。我已使用robot类处理此情况,当您运行脚本时,请不要触摸鼠标和键盘。如果是新窗口或iframe,您可能必须切换到警报窗口。我已通过使用robot类,运行脚本时请不要触摸鼠标和键盘。它不工作。请告诉我FF的其他选项。它不起作用。请告诉我FF的其他选择。