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

本文关键字:访问 Selenium 元素 | 更新日期: 2023-09-27 18:16:27

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

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

产生相同的错误

无法定位元素:{"method":"id","selector":"keyword"}

如下所示,元素的Id显然是'keyword'。

<input maxlength="100" size="20" value="" name="keyword" id="keyword" title="keyword" class="FORMshrt2">

我使用firebug来捕获这个元素的完整XPath。

/html/身体/div[3]/跨度/表/身体/tr/td tbody/tr/表[1]/[2]/td/div[1]/跨度/形式/div [3] tbody/tr/表[3]/[2]/td/表/tbody/tr [1]/td/表/身体/tr [11]/td[2]/跨度/输入

如何访问这个元素?

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

尝试像这里解释的那样用/>关闭标签输入。

<input maxlength="100" size="20" value="" name="keyword" id="keyword" title="keyword" class="FORMshrt2" />

我不知道Selenium是否期望这个结束标记,但其他一切看起来都很好。

元素可能在您开始查找它的时候还没有出现。等待元素出现在DOM中:

IWebElement element = new WebDriverWait(driver, TimeSpan.FromSeconds(timeOut)).Until(ExpectedConditions.ElementExists((By.Id("keyword"))));

使用等待语句,然后尝试下面的代码

您可以尝试下面的代码,这可能对您的情况有所帮助,

Thread.Sleep(5000);
driver.FindElement(By.XPath("//input[@class='FORMshrt2']")).Click();
driver.FindElement(By.XPath("//input[@class='FORMshrt2']")).SendKeys("your text");

通过使用你的类名我识别元素,首先点击它,然后传递字符串。