selenium 解决出现Message: element not interactable元素不可交互的问题

最近在使用 selenium 的时候,遇到了 element not interactable 的错误。引发错误的代码如下:

By orgOpt = By.xpath("//span[contains(text(),'XXX')]");
var p3 = driver.wait(until.elementLocated(orgOpt));
p3.then(function() {
    driver.findElement(orgOpt).click();
});

错误信息如下:

Uncaught (in promise) ElementNotInteractableError: element not interactable
  (Session info: chrome=78.0.3904.87)
    at Object.throwDecodedError (second-app\node_modules\selenium-webdriver\lib\error.js:550:15)
    at parseHttpResponse (second-app\node_modules\selenium-webdriver\lib\http.js:563:13)
    at Executor.execute (second-app\node_modules\selenium-webdriver\lib\http.js:489:26)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
    at async thenableWebDriverProxy.execute (second-app\node_modules\selenium-webdriver\lib\webdriver.js:699:17)

后来发现,应该是尝试点击的时候元素还未可见。

解决办法就是在 until.elementLocated 之后再添加一个 until.elementIsVisible 的判断。

By orgOpt = By.xpath("//span[contains(text(),'XXX')]");
var p3 = driver.wait(until.elementLocated(orgOpt));
p3.then(function() {
    var p4 = driver.wait(until.elementIsVisible(driver.findElement(orgOpt))); // 添加一个判断
    p4.then(function() {
        driver.findElement(orgOpt).click(); // 点击下拉选项选中机构
    });                    
});        

这样处理之后,就没有遇到 element not interactable 的错误了。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值