我正在尝试学习selenium webdriver自动化,但我发现sendKeys命令没有在密码类型字段上输入。我可以看到其他一些人也通过谷歌搜索遇到了同样的问题,但我还没有看到任何正确的答案。有人可以帮我这里。
请在下面找到示例代码;我从Selenium IDE生成代码,它在IDE上运行良好,但在我使用webdriver时没有。
package com.example.tests;
public class Login {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www.webs.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testLogin() throws Exception {
driver.get(baseUrl + "/");
driver.findElement(By.cssSelector("span")).click();
driver.findElement(By.id("FWloginUsername")).clear();
driver.findElement(By.id("FWloginUsername")).sendKeys("aug2qatestingqa@yahoo.com");
driver.findElement(By.id("FWloginPassword2")).clear();
driver.findElement(By.id("FWloginPassword2")).sendKeys("webs");
driver.findElement(By.id("sign_in_leaf")).click();
}
答案 0 :(得分:0)
有两个密码字段,一个是隐藏的。解决方法是单击第一个密码[hidden]字段以启用第二个密码字段。
driver.findElement(By.id("FWloginUsername")).sendKeys("aug2qatestingqa@yahoo.com");
driver.findElement(By.id("FWloginPassword")).click();
driver.findElement(By.id("FWloginPassword2")).clear();
driver.findElement(By.id("FWloginPassword2")).sendKeys("webs");
答案 1 :(得分:0)
我的密码字段几乎有类似的情况。有两个相同的密码'密码'字段但具有不同的ID。 JavaScript正在切换" type = password"在运行时点击,清除或对该字段的任何操作。
在这种情况下,解决方案是找到带有输入public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Site", action = "Index", id = UrlParameter.Optional },
constraints: new { subdomain = new SubdomainRouteConstraint("www") },
namespaces: new string[] { "DeltaNorgeWebsite.Controllers" }
);
routes.MapRoute(
name: "Files",
url: "{id}",
defaults: new { controller = "File", action = "Index" },
constraints: new
{
subdomain = new SubdomainRouteConstraint("files")
}
);
#if DEBUG
// redirect localhost
routes.MapRoute(
name: "LocalhostRedirect",
url: "",
defaults: new { controller = "Redirect", action = "Index", path = "http://www.delta-norge.com" },
constraints: new
{
subdomain = new SubdomainRouteConstraint("localhost")
}
);
#endif
}
,
例如:
type = password
答案 2 :(得分:0)
我的问题是我使用ActionChains
导致使用send_keys方法时无法填充后面的字段。
解决方案是致电actions.reset_actions()
例如
actions = ActionChains(driver)
actions.key_down(Keys.LEFT_CONTROL).send_keys("a").perform()
actions.key_down(Keys.LEFT_CONTROL).send_keys("c").perform()
actions.reset_actions()
# now send_keys() method works again
答案 3 :(得分:-3)
cvvTxtBox().sendKeys("1234");
cvvTxtBox().sendKeys(Keys.TAB);
关于这个问题的最终解决方案 否则使用机器人