[英]Selenium C# how to get text in IWEbElement
我正在尝试在网站上填写一个文本字段,每次打开该网站时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在字段中发送sendKeys( 仅供参考,id的PRMT_TB部分不会更改,即使其余部分每次都更改,因此xpath ):
var currentWebElement = driver.FindElement(By.XPath("//input[starts-with(@id,'PRMT_TB')]"));
currentWebElement.SendKeys("51");
如果以上方法无效,请尝试以下代码
var currentWebElement = driver.FindElement(By.XPath("//td[@class='clsTextWidgetParseError']/input"));
currentWebElement.SendKeys("51");
By byCss = By.CssSelector(".clsTextWidgetParseError>input");
var element = Driver.FindElement(byCss );
element.Clear();
element.SendKeys(value);
我假设您使用的是错误的选择器。 如果抛出任何异常,请向我提供堆栈跟踪
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.