我正在尝试找到以下元素并在其中输入文本。我尝试了许多不同的方法来访问元素,但总是得到相同的错误。我目前的代码行
searchTerm = driver.FindElement(By.Id("keyword"));
生成相同的错误
无法找到元素:{"方法":" ID","选择器":"关键字"}
如下所示,该元素显然具有Id'关键字'。
<input maxlength="100" size="20" value="" name="keyword" id="keyword" title="keyword" class="FORMshrt2">
&#13;
我使用firebug捕获此元素的完整XPath。
/ HTML /体/ DIV /跨度/表[3] / tbody的/ TR / TD /表[1] / tbody的/ TR [2] / TD / DIV [1] /跨度/形式/ DIV [3] /表[3] / tbody的/ TR [2] / TD /表/ tbody的/ TR [1] / TD /表/ tbody的/ TR [11] / TD [2] /量程/输入
如何访问此元素?
答案 0 :(得分:0)
尝试使用/>
关闭标记输入,如解释here。
<input maxlength="100" size="20" value="" name="keyword" id="keyword" title="keyword" class="FORMshrt2" />
我不知道Selenium是否期望这个结束标记,但其他一切看起来还不错。
答案 1 :(得分:0)
在您开始寻找它时,该元素可能不会出现。等待DOM中的become present元素:
IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(timeOut)).Until(ExpectedConditions.ElementExists((By.Id("keyword"))));
答案 2 :(得分:-1)
使用wait语句然后尝试以下代码
您可以尝试以下代码,这可能对您的情况有所帮助,
Thread.Sleep(5000);
driver.FindElement(By.XPath("//input[@class='FORMshrt2']")).Click();
driver.FindElement(By.XPath("//input[@class='FORMshrt2']")).SendKeys("your text");
通过使用您的班级名称来识别元素,首先点击它然后传递字符串。