我正在尝试使用谷歌浏览器Chrome 75.0.3770.80中的“打印对话框”。 我正在使用硒关闭打印对话框上的取消按钮。
可以检查“取消”按钮,并且其选择器在UI上可见,但是当我尝试使用硒单击那些选择器时,没有此类元素异常。
此外,当我在页面上使用getSource()时,按钮选择器不在源代码中,但在UI上可见
那么,我们如何单击取消按钮,有什么方法可以做到这一点?。
答案 0 :(得分:0)
这是python中的解决方案。您可以将此方法转换为Java。
def cancelPrintPreview():
# get the current time and add 180 seconds to wait for the print preview cancel button
endTime = time.time() + 180
# switch to print preview window
driver.switch_to.window(driver.window_handles[-1])
while True:
try:
# get the cancel button
cancelButton = driver.execute_script(
"return document.querySelector('print-preview-app').shadowRoot.querySelector('#sidebar').shadowRoot.querySelector('print-preview-header#header').shadowRoot.querySelector('paper-button.cancel-button')")
if cancelButton:
# click on cancel
cancelButton.click()
# switch back to main window
driver.switch_to.window(driver.window_handles[0])
return True
except:
pass
time.sleep(1)
if time.time() > endTime:
driver.switch_to.window(driver.window_handles[0])
break
您可以查看我的答案here,以获得有关使用阴影根元素的更多信息。
答案 1 :(得分:0)
答案太多,方法太复杂。这是一个更好的选择:
您在这里要做的基本上是获取触发打印弹出窗口/对话框并将其分配给空函数的默认JavaScript函数:
window.print = "function(){};"
以上是在Python中的处理方式。尝试将其翻译成Java。