通过selenium RC访问新的窗口元素

时间:2014-02-13 12:50:40

标签: selenium automation selenium-rc

我是Selenium的新手。这是我的第一次尝试。我想通过Selenium RC访问新窗口中的Elements。我有一个单击超链接的页面将打开新页面。我想在新窗口中输入用户名和密码元素。 Html代码是

员工登录

并且新的页面元素是用于登录的“emailAddress”和“password”。

我的硒代码是

public static void main(String args[]) throws Exception
{
    RemoteControlConfiguration rc=new RemoteControlConfiguration();
    rc.setPort(2343);
    SeleniumServer se= new SeleniumServer(rc);
    Selenium sel=new DefaultSelenium("localhost",2343,"*firefox","http://neo.local/");
    se.start();
    sel.start();
    sel.open("/");
    sel.windowMaximize();
    //sel.wait(1000);
    sel.click("empLogin");
    //sel.wait(2000);       
    //sel.openWindow("http://myneo.neo.local/user/login", "NewNeo");
    //sel.waitForPopUp("NewNeo", "1000");
    //sel.selectWindow("id=NewNeo");
    Thread.sleep(20000);
    sel.type("emailAddress", "kiranxxxxx@xxxxxx.com");
    sel.type("password", "xxxxxxxx");

}

首先,我尝试了常规方法,但未能识别元素。然后我尝试使用打开的窗口并选择窗口选项,通过

等错误
"Exception in thread "main" com.thoughtworks.selenium.SeleniumException: ERROR: Window locator not recognized: id
at com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:109)
at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:103)
at com.thoughtworks.selenium.DefaultSelenium.selectWindow(DefaultSelenium.java:377)
at Demo.main(Demo.java:24)"

有人告诉我,Selenium RC是不可能的。它只能通过Selenium Webdriver实现。这是真的吗?

请帮助, 在此先感谢。

2 个答案:

答案 0 :(得分:1)

Selenium RC不再维护,我建议你改用WebDriverSelenium RC是一个Javascript应用程序,其中WebDriver使用浏览器Native API。因此,使用WebDriver的浏览器交互与真实用户的交互很接近。此外,WebDriver的API在我看来更直观,更易于使用。我在你的问题中没有看到HTML,但你可以从这样的事情开始,

WebDriver driver = new FirefoxDriver();
WebElement login = driver.findElement(By.id("empLogin"));
login.click();

答案 1 :(得分:1)

我会说,按照@nilesh说的那样做。使用Selenium WebDriver。

尽管回答您的具体问题:

您在这一行失败了,因为您没有指定选择器策略。

sel.click("empLogin");

如果id属性为empLogin,则执行

sel.click("id=empLogin");

您可以使用其他选择器策略:

css=
id=
xpath=
link=
etc...

您可以看到完整列表here

由于同样的问题,你也会在这里失败:

sel.type("emailAddress", "kiranxxxxx@xxxxxx.com");
sel.type("password", "xxxxxxxx");

在这些字段之前加上选择器策略前缀。

sel.type("name=emailAddress", "kiranxxxxx@xxxxxx.com");
sel.type("name=password", "xxxxxxxx");