Selenium:如何单击弹出窗口中的登录按钮?
Selenium: How to click the login button on popup?
上图是 flex 制作的弹出窗口。我正在使用 FlashFireBug(https://addons.mozilla.org/en-us/firefox/addon/flashfirebug/) 识别 flash 对象,如下所示(获取要在 selenium 中使用的对象 ID):
我可以使用 FlexUISelenium(https://code.google.com/p/flex-ui-selenium/) 在相应的文本区域中成功输入我的用户名和密码。
我编写了以下代码用于在文本区域中输入值:
@SuppressWarnings("deprecation")
public class FlexUISeleniumTestTPF {
private final static String BASE_URL = "http://localhost:8080/FlexDemo/TTDSWeb/TTDSWeb.html";
private final static String PAGE = "http://localhost:8080/FlexDemo/TTDSWeb/TTDSWeb.html";
private Selenium selenium;
private FlexUISelenium flexUITester;
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*iexplore",BASE_URL);
selenium.start();
selenium.open(PAGE);
selenium.windowMaximize();
flexUITester = new FlexUISelenium(selenium, "TTDSWeb");
}
public void tearDown() throws Exception {
selenium.stop();
}
public void clickLogin() throws InterruptedException{
flexUITester.click("loginbut"); // This button opens popup
Thread.sleep(10000);
//Entering username
flexUITester.type("sg0222186").at("unamelogin");
//Entering password
flexUITester.type("wag9hebbal").at("pwd");
}
public static void main(String[] args) throws Exception {
FlexUISeleniumTestTPF myTest = new FlexUISeleniumTestTPF();
myTest.setUp();
myTest.clickLogin();
}
现在,我想单击 "Log in" 按钮。我认为的一个想法是从文本区域模拟 "TAB" 按键以将焦点带到按钮上,但这对我不起作用。请帮忙。
如果您无法点击 "Log in" 按钮。请在成功输入用户 ID 和密码的值后尝试发送 ENTER。
即.sendKeys(Keys.ENTER)
最后,我能够单击弹出窗口中的按钮。这是通过在 Java 中使用 Mouse-Position(https://chrome.google.com/webstore/detail/mouse-position/mlicednebhhgebkhhmomongffeidkdmi) 和 Robot class 实现的。下面是我的代码:
Robot r = new Robot();
r.mouseMove(635, 210); // brings focus on login popup window, got location(x,y coordinates) from Mouse-Position chrome plugin
// left-click mouse on the location
r.mousePress(MouseEvent.BUTTON1_MASK);
r.mouseRelease(MouseEvent.BUTTON1_MASK);
//simulating Enter key press, this automatically clicks login and submits the form
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
上图是 flex 制作的弹出窗口。我正在使用 FlashFireBug(https://addons.mozilla.org/en-us/firefox/addon/flashfirebug/) 识别 flash 对象,如下所示(获取要在 selenium 中使用的对象 ID):
我可以使用 FlexUISelenium(https://code.google.com/p/flex-ui-selenium/) 在相应的文本区域中成功输入我的用户名和密码。
我编写了以下代码用于在文本区域中输入值:
@SuppressWarnings("deprecation")
public class FlexUISeleniumTestTPF {
private final static String BASE_URL = "http://localhost:8080/FlexDemo/TTDSWeb/TTDSWeb.html";
private final static String PAGE = "http://localhost:8080/FlexDemo/TTDSWeb/TTDSWeb.html";
private Selenium selenium;
private FlexUISelenium flexUITester;
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*iexplore",BASE_URL);
selenium.start();
selenium.open(PAGE);
selenium.windowMaximize();
flexUITester = new FlexUISelenium(selenium, "TTDSWeb");
}
public void tearDown() throws Exception {
selenium.stop();
}
public void clickLogin() throws InterruptedException{
flexUITester.click("loginbut"); // This button opens popup
Thread.sleep(10000);
//Entering username
flexUITester.type("sg0222186").at("unamelogin");
//Entering password
flexUITester.type("wag9hebbal").at("pwd");
}
public static void main(String[] args) throws Exception {
FlexUISeleniumTestTPF myTest = new FlexUISeleniumTestTPF();
myTest.setUp();
myTest.clickLogin();
}
现在,我想单击 "Log in" 按钮。我认为的一个想法是从文本区域模拟 "TAB" 按键以将焦点带到按钮上,但这对我不起作用。请帮忙。
如果您无法点击 "Log in" 按钮。请在成功输入用户 ID 和密码的值后尝试发送 ENTER。
即.sendKeys(Keys.ENTER)
最后,我能够单击弹出窗口中的按钮。这是通过在 Java 中使用 Mouse-Position(https://chrome.google.com/webstore/detail/mouse-position/mlicednebhhgebkhhmomongffeidkdmi) 和 Robot class 实现的。下面是我的代码:
Robot r = new Robot();
r.mouseMove(635, 210); // brings focus on login popup window, got location(x,y coordinates) from Mouse-Position chrome plugin
// left-click mouse on the location
r.mousePress(MouseEvent.BUTTON1_MASK);
r.mouseRelease(MouseEvent.BUTTON1_MASK);
//simulating Enter key press, this automatically clicks login and submits the form
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);