什么是错误 OpenQA.Selenium.WebDriverException : javascript error: document.getElementByName is not a function

时间:2021-01-14 08:17:32

标签: javascript c# selenium selenium-webdriver

我在执行以下代码行时出错

driver = new ChromeDriver(@"C:\Users\hp\Documents\Driver");
driver.Navigate().GoToUrl("http://demo.guru99.com/v3/");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("document.getElementByName('uid').value ='mngr303517'");
js.ExecuteScript("document.getElementByName('password').value='ujudysY'");
js.ExecuteScript("document.getElementByName('btnLogin').click()");

我在第 3 行收到错误

<块引用>

document.getElementByName 不是函数(会话信息:chrome=87.0.4280.141)

这是什么原因?

1 个答案:

答案 0 :(得分:2)

JavaScript 方法是 document.getElementsByName(...)(复数 - 元素不是元素)。

此方法返回元素的集合,而不是单个元素。

js.ExecuteScript("document.getElementsByName('uid')[0].value ='mngr303517'");

请务必在调用 [0] 属性之前访问集合的 value 索引。

使用 document.querySelector 可能更简洁:

js.ExecuteScript(@"document.querySelector(""[name='uid']"").value ='mngr303517'");
js.ExecuteScript(@"document.querySelector(""[name='password']"").value='ujudysY'");
js.ExecuteScript(@"document.querySelector(""[name='btnLogin']"").click()");