gpt4 book ai didi

javascript - 不可靠的点击项 Selenium WebdriverJS

转载 作者:行者123 更新时间:2023-11-29 16:04:16 28 4
gpt4 key购买 nike

我正在尝试从 React.js 网络应用程序中点击一个动态加载的项目。该项目打开一个模式窗口,类名称为 newItemView。我试过很多东西,但没有什么是可靠的。它会工作几次,但随后给我一个错误。

目标是单击动态项,然后单击模态窗口中的按钮。

尝试 1:

driver.wait(until.elementLocated(By.xpath(PATH_TO_DYNAMIC_ELEMENT)), MAX_WAIT_TIME,
'Could not locate the element within the time specified')
.then(function() {
driver.findElement(By.xpath(PATH_TO_DYNAMIC_ELEMENT)).click();
});

driver.wait(until.elementLocated(By.xpath(PATH_TO_MODAL_BUTTON)), MAX_WAIT_TIME,
'Could not locate the modal element within the time specified')
.then(function() {
driver.findElement(By.xpath(PATH_TO_MODAL_BUTTON)).click();
});

大约 5 次尝试中有一次会抛出 “无法在指定时间内找到模态元素”,因为模态实际上并未打开。

尝试 2 等待,然后使用 Actions 移动按钮并单击:

driver.wait(until.elementLocated(By.xpath(PATH_TO_DYNAMIC_ELEMENT)), MAX_WAIT_TIME,
'Could not locate the dynamic element within the time specified')
.then(function() {
driver.findElement(By.xpath(PATH_TO_DYNAMIC_ELEMENT))
.then(function(PATH_TO_DYNAMIC_ELEMENT_BUTTON) {
var actions = new webdriver.ActionSequence(driver);
actions.mouseMove(PATH_TO_DYNAMIC_ELEMENT_BUTTON).click().perform();
});
});

然后执行检查以查看模式是否打开

driver.findElement(webdriver.By.className("newItemView"))
.then(function() {
driver.findElement(By.xpath(PATH_TO_MODAL_BUTTON)).click();
}, function (err) {
if (err.name === "NoSuchElementError")
console.log("Element was missing!");
});

这似乎效果更好,但仍然会抛出大约十分之一的错误。在网页上,Actions 似乎有效,因为该项目在 悬停 时显示,但从未被点击。

最佳答案

我想你可以尝试使用 JavaScript 执行器...比如

WebElement YourElement= driver.findElement(By.id("YourElement-ID"));
JavascriptExecutor ExeCutor = (JavascriptExecutor)driver;
ExeCutor.executeScript("arguments[0].click();", YourElement);

关于javascript - 不可靠的点击项 Selenium WebdriverJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568280/

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