gpt4 book ai didi

javascript - 我如何等待元素在 WebDriverJS 中可点击?

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:51 25 4
gpt4 key购买 nike

有人知道如何等待 WebElement 在 WebDriverJS 中可点击吗? ?我已经知道如何等待元素“可见”,但我需要它是“可点击的”。类似于 expectable conditions 的东西在 Python 绑定(bind)中。我没能在 Webdriver Js API 中找到类似的东西。

最佳答案

似乎没有等同于 Python 的 selenium.webdriver.support.expected_conditions.element_to_be_clickable 的条件。但是,查看该条件的来源,我发现它进行了两项检查:

  1. 元素可见。

  2. 它已启用。

因此您可以等待两个条件都变为真。下面的代码说明了如何做到这一点。它首先使元素不可见并禁用它,设置一些超时使其可见并启用它,然后等待这两个条件发生。

var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();

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

// This script allows testing the wait. We make the element invisible
// and disable it and then set timeouts to make it visible and enabled.
driver.executeScript("\
var q = document.getElementsByName('q')[0];\
q.style.display = 'none';\
q.disabled = true;\
setTimeout(function () {\
q.style.display = '';\
}, 2000);\
setTimeout(function () {\
q.disabled = false;\
}, 3000);\
");
driver.findElement(webdriver.By.name('q')).then(function (element) {
driver.wait(function () {
return element.isDisplayed().then(function (displayed) {
if (!displayed)
return false;

return element.isEnabled();
});
});
element.sendKeys('webdriver');
});
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);

driver.quit();

由于我们使用的是 promises,代码可能看起来有点奇怪。并不是说 promises 本质上很奇怪,而是当人们习惯使用 Python 时,它们需要一些时间来适应。

关于javascript - 我如何等待元素在 WebDriverJS 中可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com