我正在使用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
永远找不到该对象。
这里共享了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();从浏览器的控制台运行,它将正常运行
document.getElementById('saveexit').click();
我在脚本中使用jquery修复了它;
这是行代码:
js.executeScript("$('#saveexit').trigger('click');");
希望以后能对某人有所帮助。
我不知道为什么普通的javascript无法正常工作…