如何使用Selenium在C#中访问此元素?

时间:2015-10-07 20:31:40

标签: c# firefox selenium selenium-webdriver

我正在尝试找到以下元素并在其中输入文本。我尝试了许多不同的方法来访问元素,但总是得到相同的错误。我目前的代码行

searchTerm = driver.FindElement(By.Id("keyword"));

生成相同的错误

  

无法找到元素:{"方法":" ID","选择器":"关键字"}

如下所示,该元素显然具有Id'关键字'。



<input maxlength="100" size="20" value="" name="keyword" id="keyword" title="keyword" class="FORMshrt2">
&#13;
&#13;
&#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] /量程/输入

如何访问此元素?

3 个答案:

答案 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");

通过使用您的班级名称来识别元素,首先点击它然后传递字符串。