如何在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]/跨度/输入
如何访问这个元素?
尝试像这里解释的那样用/>
关闭标签输入。
<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");
通过使用你的类名我识别元素,首先点击它,然后传递字符串。