我是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实现。这是真的吗?
请帮助, 在此先感谢。
答案 0 :(得分:1)
Selenium RC
不再维护,我建议你改用WebDriver
。 Selenium 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");