【发布时间】:2015-02-13 15:40:08
【问题描述】:
我正在尝试填写网站上的文本字段,每次打开网站时,其 id 都会更改。为了避免这种情况,我通过它的类名查找 webelement,这似乎工作得很好,因为我可以通过
点击它currentWebElement.Click();
但是,当我尝试通过
填写编辑文本框时currentWebElement.SendKeys("51");
什么都没有发生(更重要的是,失去了焦点)
我进行了很多搜索以了解问题所在,但未能找到解决方案,因此我想知道这里是否有人可以为我指明正确的方向。到目前为止我尝试过的:
1) 我在 chrome 中工作,但由于这似乎是 sendKeys 的一个常见问题,所以我已经切换到即,唉,问题仍然存在。我尝试迁移到 firefox 但没有成功,因为我似乎无法找到 firefox.exe 的二进制路径,但这应该在另一个问题中解决。所以问题出现在chrome和IE中。
2) 使用 javascript 发送命令,因为我在本网站回答的其他问题中发现了这个建议:
driver.ExecuteScript("arguments[0].value = '51'", currentWebElement);
直接但也将其作为函数实现是行不通的:
private static object setValue(this IWebDriver driver, IWebElement element, String value) {
return ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].value = arguments[1]", element, value);
}
// and then calling it in my code:
setValue(driver, currentWebElement, "51");
所有实现都没有给我错误或警告(我在这个过程中设法摆脱了那些),但它们都没有给出预期的结果,即盒子一直保持空白,这真的开始让我烦恼!
【问题讨论】:
-
使用 xpath 可能是正确的做法。能否也提供一下html?
-
相当长的html即:vmm.be/webrap/ibmcognos/cgi-bin/…
-
我只想看目标元素的html sn-p
-
然后通过以下方式找到 currentWebElement:var currentWebElement= driver.FindElementByClassName("clsTextWidgetParseError");
-
你是这个意思吗?
标签: javascript c# selenium