【问题标题】:Unable to find an web element with JavaScript Selenium Webdriver无法使用 JavaScript Selenium Webdriver 找到 Web 元素
【发布时间】:2023-04-01 22:56:01
【问题描述】:

我正在尝试使用 selenium 运行一个简单的测试,但没有成功。

我有一个 javascript 配置测试:

chrome.config.js

var driver = new webdriver.Builder().
  .forBrowser('chrome')
  .build();


driver.get('http://www.google.com');

driver.findElement(By.name('btnI')).click();

我收到以下错误:

(节点:5921)UnhandledPromiseRejectionWarning:WebDriverError:元素不可交互 (会话信息:chrome=70.0.3538.77) (驱动程序信息:chromedriver=2.44.609551(5d576e9a44fe4c5b6a07e568f1ebc753f1214634),平台=Linux 4.15.0-42-generic x86_64) 在 Object.checkLegacyResponse (/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/error.js:585:15) 在 parseHttpResponse (/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/http.js:533:13) 在 Executor.execute (/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/http.js:468:26) 在 在 process._tickCallback (internal/process/next_tick.js:188:7) (节点:5921)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1) (节点:5921)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

这里有什么问题?

我的设置:

节点版本:8.11.3

chromedriver 版本:2.44.609551

操作系统:Ubuntu 18.0.4 LTS 64 位

【问题讨论】:

    标签: selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    经过一些测试,我能够通过以下更改完成我的代码工作。

    var webdriver = require('selenium-webdriver'),
      By = webdriver.By,
      until = webdriver.until;
    
    var driver = new webdriver.Builder()
      .forBrowser('chrome')
      .build();
    
    
    driver.get('http://www.google.com');
    
    var btnI;
    
    driver.findElements(By.name('btnI')).then(function(list) {
      btnI = list[1];
      btnI.click();
    });
    

    【讨论】:

      【解决方案2】:

      有两个输入字段具有相同的@name:第一个是隐藏的。您需要处理第二个(可见的):

      driver.findElement(By.cssSelector('div.FPdoLc input[name="btnI"]')).click();
      

      【讨论】:

      • 嗨安德森,第一个选项,我收到Cannot read property 'click' of undefined
      • @PabloDarde,试试driver.findElement(By.cssSelector('div.FPdoLc input[name="btnI"]')).click();
      • 嗨安德森。我没有得到提交方法也有效。还是谢谢。
      • @PabloDarde ,对不起,我不熟悉 Selenium JavaScript 绑定。我刚刚将 Python 代码转换为 JavaScript。没想到简单的代码实现在 JavaScript 中会这么复杂:)
      • 没问题@Andersson,你给了我findElements的小费。谢谢大佬
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2016-08-31
      • 2014-07-18
      • 2020-08-28
      • 2018-03-31
      • 2017-08-18
      相关资源
      最近更新 更多