【问题标题】:What is the error OpenQA.Selenium.WebDriverException : javascript error: document.getElementByName is not a function什么是错误 OpenQA.Selenium.WebDriverException:javascript 错误:document.getElementByName 不是函数
【发布时间】:2021-01-14 08:17:32
【问题描述】:

我在执行下面的代码行时出错

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)

这是什么原因?

【问题讨论】:

  • 应该是getElementsByNamesee here。您缺少一个“s”,它的复数并返回一个数组。

标签: javascript c# selenium selenium-webdriver


【解决方案1】:

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

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

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

确保在调用value 属性之前访问集合的[0] 索引。

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

【讨论】:

  • 是的,我明白了,非常感谢,这是我的错误
猜你喜欢
  • 2016-09-19
  • 2017-05-19
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多