如何解决 selenium webdriver:元素不可交互错误:元素在节点中不可交互

lb3vh1jj  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(169)

我开始学习 selenium
但是我在尝试上传和下载时遇到了这样的问题:
我想上传一个this site的dwg文件,然后把它转换成文本文件,所以我用的是selenium。
上载文件时遇到问题
这是我的错误消息:

我们已经尝试了几种方法来解决这个问题。
1.最大化();
1.使用click()代替sendKeys()
1.检查元素是否已启用
但是,没有解决方案能够解决这个问题。

const { Builder, Browser, By, Key, until } = require("selenium-webdriver");
const chromeDriver = require("selenium-webdriver/chrome");
const chromeOptions = new chromeDriver.Options();

const chromeExample = async () => {
  const driver = await new Builder()
    .forBrowser(Browser.CHROME)
    .setChromeOptions(chromeOptions.headless())
    .build();

  driver.manage().window().maximize();

  await driver.get("https://products.aspose.app/cad/text-extractor/dwg");

  await driver.wait(
    until.elementLocated(By.className("filedrop-container width-for-mobile")),
    10 * 1000
  );

  await driver.wait(
    until.elementIsEnabled(
      driver.findElement(By.className("filedrop-container width-for-mobile"))
    ),
    10 * 1000
  );

  const tmp = await driver
    .findElement(By.className("filedrop-container width-for-mobile"))
    .sendKeys("/home/yeongori/workspace/Engineering-data-search-service/macro/public/images/testfile1.dwg");
  console.log(tmp);
};

同样的错误发生在我改变如下代码时。
一个奇怪的事情是,如果我改变sendKeys点击并检查tmp与console.log,它是空的。
这是项目目录

我怎样才能解决这个问题呢?如果这个问题太简单的话,我很抱歉。但是如果有任何提示的话,我会很高兴的。谢谢。
WSL 2(Ubuntu-20.04),节点. js版本18.12.1

hmae6n7t

hmae6n7t1#

您需要在input元素上使用sendKeysinput元素嵌套在您当前尝试向其发送键的元素中的更深处。
可以使用以下xpath访问元素:

"//*[contains(@id,'UploadFileInput')]"

相关问题