类型为数字的输入框的HTML如下
break
在硒测试中,我有在该输入框中输入数字的代码
case R.id.location:
getSupportFragmentManager().beginTransaction().replace(R.id.frag_cont, new currentlocation()).commit();
break;
默认情况下,输入框的值为1,但是当测试运行时,我想更改为2。但是有时值更改为12而不是2。
该如何解决?我正在使用chromedriver。
答案 0 :(得分:1)
对WaitForVisible()
方法的更多了解将有助于我们以更好的方式调试问题。但是,理想情况下,当您将SendKeys()
调用到<input>
标签时,您需要为ElementToBeClickable()
引入 WebDriverWait 。
同样,您可以使用以下Locator Strategies之一来代替Id
:
CssSelector
:
[FindsBy(How = How.CssSelector, Using = "input.form-control#noofItems"), CacheLookup]
private HtmlElement ItemsInput;
XPath
:
[FindsBy(How = How.XPath, Using = "//input[@class='form-control and @id='noofItems'']"), CacheLookup]
private HtmlElement ItemsInput;
最后,除了使用Keys.Control + "a"
和Keys.Control + "x"
之外,您还可以使用经过验证的,健壮的Clear()
方法,如下所示:
ItemsInput.WaitForVisible().Click(); //preferably wait for ElementToBeClickable()
ItemsInput.Clear();
ItemsInput.SendKeys("2");
ItemsInput.SendKeys(Keys.Return);
PS :可点击后返回元素后,您可以同时调用Clear()
和SendKeys()
,而无需任何其他服务员。
答案 1 :(得分:0)
如果该字段为空,则似乎返回默认值。您可以尝试更改它而不删除它
ItemsInput.WaitForVisible().SendKeys(Keys.Control + "a");
ItemsInput.WaitForVisible().SendKeys("2");
要解决此问题,您还可以将value
属性设置为JavaScript
driver.ExecuteScript("arguments[0].setAttribute('value', arguments[1]);", ItemsInput, 2);