gpt4 book ai didi

javascript - Selenium - 无法单击模式内的元素

转载 作者:行者123 更新时间:2023-12-02 11:50:06 24 4
gpt4 key购买 nike

我正在使用 Selenium 和 java,并且无法单击模式内的元素。场景是这样的:单击框架内的项目后,它会打开一个模式,我需要单击此模式内的一个元素,但我无法获取它。

我已经尝试过:

js.executeScript("document.getElementById('saveexit').scrollIntoView(true);");

我也尝试过这样使用 switchTo() :

while (itr.hasNext()) {
String popup = itr.next();
System.out.println("itr: " + popup);
driver.switchTo().window(popup);
}

这是我的模态的 html:

<div class="modal-dialog">

<div class="modal-content modal-custom-content">
<div class="modal-header">
...
</div>
<div class="modal-body">
<form id="formTo" class="form-container">
<div class="row">
...
</div>
<div class="small-space"></div>
<input ...>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
...
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
...
</div>
</div>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
...
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
...
</div>
</div>
<div class="small-space"></div>
<div class="row">
...
</div>
</form>
</div>
<div class="small-space"></div>
<div class="modal-footer">
<div class="row text-center">
<div class="col-md-6 col-sm-6 col-xs-12">
<button class="btn modal-button full-btn" id="saveexit" type="button">SAVE AND EXIT</button>
</div>
<div class="col-md-6 col-sm-6 col-xs-12">
...
</div>
</div>
</div>
</div>
</div>

这是从 firefox 开发工具获取的 CSS 路径:

html.no-touch body div.remodal-wrapper.remodal-is-opened div.modaliAdesione.remodal.remodal-is-initialized.remodal-is‌​-opened div.modal-dialog div.modal-content.modal-custom-content div.modal-footer div.row.text-center div.col-md-6.col-sm-6.col-xs-12 button#saveexit.btn.modal-button.full-btn 

从未找到该对象。

  • 问题 1:如果某个元素位于模态框内,则必须对其进行管理不同吗?
  • 问题2:如何最终点击按钮saveexit工作正常吗?

这里分享了html的代码片段:https://codeshare.io/arLW9q

这是java代码:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"saveexit\"]")))

我也尝试过:

cssSelector: #saveexit
cssPath: html.no-touch body div.remodal-wrapper.remodal-is-opened div.modaliAdesione.remodal.remodal-is-initialized.remodal-is-opened
div.modal-dialog div.modal-content.modal-custom-content div.modal-footer div.row.text-center div.col-md-6.col-sm-6.col-xs-12
button#saveexit.btn.modal-button.full-btn
xpath: //*[@id="saveexit"]

请注意:如果我从浏览器控制台运行 document.getElementById('saveexit').click(); ,它就会起作用

最佳答案

当您根据最佳实践使用 Selenium-Java 客户端时,首要的试验必须是调用高效且经过验证的 click() 方法。根据 click() 方法产生的错误,我们可以研究其他替代解决方案。

正如我从您使用 JavascriptExecutorswitchTo().window() 进行的代码试验中看到的,您尚未识别 WebElement代表保存并退出按钮。

要单击保存并退出按钮,您可以使用以下代码块:

new WebDriverWait(driver, 5).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='modal-dialog']//div[@class='modal-footer']//button[@class='btn modal-button full-btn' and @id='saveexit']"))).click();

关于javascript - Selenium - 无法单击模式内的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47944349/

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