Python 如何关闭或关闭模式对话框
我有一个模态对话框,在我确定它的存在并提取它的文本后,我需要关闭/关闭它。当我点击按钮下载一个文件时,模式出现,它说“正在生成debuginfo文件。请稍候”。这个模式一直存在,直到文件下载开始,这取决于debuginfo文件的大小,文件下载时间过长。是否有方法关闭此对话框并从中提取文本退出 我正在使用以下代码提取文本:Python 如何关闭或关闭模式对话框,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我有一个模态对话框,在我确定它的存在并提取它的文本后,我需要关闭/关闭它。当我点击按钮下载一个文件时,模式出现,它说“正在生成debuginfo文件。请稍候”。这个模式一直存在,直到文件下载开始,这取决于debuginfo文件的大小,文件下载时间过长。是否有方法关闭此对话框并从中提取文本退出 我正在使用以下代码提取文本: downloadText = WebDriverWait(self.driver,40).until(EC.visibility_of_element_located((By.
downloadText = WebDriverWait(self.driver,40).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.ui-dialog-content.ui-widgetcontent#dialog"))).get_attribute("innerHTML").split(">")[1]
以下是此模式的html代码:
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span id="ui-id-1" class="ui-dialog-title">Download debug info</span>
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" aria-disabled="false" title="close">
<span class="ui-button-icon-primary ui-icon ui-icon-closethick">
</span>
<span class="ui-button-text">close</span>
</button>
</div>
<div id="dialog" class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; max-height: none; height: 177px;">
<br>Generating the debuginfo file. Please wait.</div>
<div class="ui-resizable-handle ui-resizable-n" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-e" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-s" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-w" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-sw" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-ne" style="z-index: 90;">
</div>
<div class="ui-resizable-handle ui-resizable-nw" style="z-index: 90;">
</div> ```
下载调试信息
关闭
正在生成debuginfo文件。请稍等。
```
根据原始帖子中提供的示例代码,您应该能够使用下面的xpath关闭对话框
//span[@class='ui-button-icon-primary ui-icon ui-icon-closethick']
下面是即使元素不可见也要单击它的脚本
ele = driver.find_element_by_xpath("//span[@class='ui-button-icon-primary ui-icon ui-icon-closethick']")
driver.execute_script("arguments[0].click();",ele)
关闭模式对话框,您必须使
元素成为可点击的()的WebDriverWait,并且您可以使用以下任一选项:
- 使用
CSS\u选择器
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.ui-button.ui-widget.ui-state-default.ui-corner-all.ui-button-icon-only.ui-dialog-titlebar-close[title='close'] span.ui-button-icon-primary.ui-icon.ui-icon-closethick"))).click()
- 使用
XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close' and @title='close']//span[@class='ui-button-icon-primary ui-icon ui-icon-closethick']"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
有与下载调试信息
相关的关闭
,你能点击它吗?我不知道有关闭按钮。现在我选中它是一个十字标记来关闭对话框,但它是隐藏的。我如何使其可见以关闭它?我使用了此解决方案,它起了作用。但唯一的问题是,检测到该元素可点击的时间太长,约20-25秒。是否有可能元素_to _be _clickable()很慢,并且有其他替代方法吗?@nd23使用Selenium时,遵循经验法则,click()
应该始终被调用,否则click()
可能会因各种原因而失败。@nd23如果这个/任何答案对您有帮助,请给出答案,以方便将来的读者。