我们正在尝试验证我们的网站http://xmonad.org/xmonad-docs/X11/Graphics-X11-Xlib-Types.html。 它要求输入用户名和密码,我们必须通过我们的selenium java代码提供。 你能帮我吗? 谢谢, Rachit
答案 0 :(得分:1)
在调用driver.get命令之前,您需要构造一个testURL。
所以假设 用户名= admin 和传递=传递
String testURL = "https://" + "admin" + ":" + "pass" + "@" + "staging.rockettes.com/";
现在您可以安全地调用您的driver.get,如下所示:
driver.get(testURL);
祝你好运!
在发表评论后更新了答案:
好的,所以为了接受你可以使用的警报:
WebDriverWait waitTime = new WebDriverWait(driver, 5);
Boolean isAlertPresent = wait.until(ExpectedConditions.alertIsPresent());
if(isAlertPresent==true){
Alert alert = driver.switchTo().alert();
alertText = alert.getText();
alert.accept();
}
else{
System.out.println("No alert was present!")
}
答案 1 :(得分:0)
我认为,点击你的URL的弹出窗口不是基于网络的警报,而是它是一个窗口警报,所以你可以在AutoIT的帮助下处理它,或者你可以使用Robot类来做到这一点如下(虽然不推荐):
String userName = "ADMIN";
StringSelection stringSelection = new StringSelection(userName);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
String password = "PASS";
StringSelection stringSelection1 = new StringSelection(password);
Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard1.setContents(stringSelection1, stringSelection1);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
答案 2 :(得分:0)
如果处理弹出窗口,请在传递用户名和密码之前使用以下命令
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
答案 3 :(得分:0)
您可以使用以下任何方式:
<强> 1。通过URL:
String url= "https://" + "username" + ":" + "password" + "@" + "staging.rockettes.com";
driver.get(url);
<强> 2。警报强>
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword("username", "password"));
第3。 AutoIt的强>
处理身份验证窗口的自动脚本:
WinWaitActive("Windows Security")
Send("username")
Send("{TAB}")
Send("password")
Send("{ENTER}")
将此文件另存为“auth.au3” 右键单击该文件并选择“编译脚本(x86)”选项,它将生成“auth.exe” 现在编写示例java代码以使用它:
driver.get("https://staging.rockettes.com/");
Runtime.getRuntime().exec("E:\\AutoIT\\auth.exe");
<强> 4。 Sikuli 强>
Screen screen = new Screen();
driver = new FirefoxDriver();
driver.get("https://staging.rockettes.com/");
screen.type("C:\\username.png"),"username");
screen.type("C:\\password.png","password");
screen.click("C:\\okButton.png");
答案 4 :(得分:0)
尝试一下, 以下解决方案特定于chrome,并且相同的方法也可以应用于不同的浏览器
public String getBaseUrl() {
StringBuilder stagingURl = new StringBuilder();
try {
URL url = new URL(baseUrl);
stagingURl
.append(url.getProtocol())
.append("://")
.append(URLEncoder.encode(stagingUsername, "utf-8"))
.append(":")
.append(URLEncoder.encode(stagingPassword, "utf-8"))
.append("@")
.append("staging.rockettes.com");
return stagingURl.toString();
} catch (UnsupportedEncodingException | MalformedURLException e) {
return "Issue while encoding URL" + e.getMessage();
}
答案 5 :(得分:0)
给定的解决方案无法使用selenium get()方法加载这样的URL,以提示使用JavaScript Popup进行身份验证,我在这里也呆了很长时间。这是因为Chrome驱动程序在更新59之后(可能)不允许使用这种身份验证技术。仍然有通过Selenium使用浏览器中的JavaScript引擎加载此类URL的后门程序。
driver.get("https://www.google.com");
JavascriptExecutor jse = (JavascriptExecutor) driver;
URL = "https://username:password@www.example.com";
jse.executeScript("window.open('"+URL+"')");