首页 > 解决方案 > 什么是错误 OpenQA.Selenium.WebDriverException:javascript 错误:document.getElementByName 不是函数

问题描述

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

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)

这是什么原因?

标签: javascriptc#seleniumselenium-webdriver

解决方案


JavaScript 方法是 document.getElement s ByName(...) (复数 - 元素不是元素)。

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

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()");

推荐阅读