Selenium python + selenium 操作 webview 内的弹窗问题

zhizunbao84 · 2019年10月29日 · 1331 次阅读

用 python+selenium 测试 android 模拟器里面的 webview,模拟器中 app 有个按钮,点击后会出现个 div 的弹出框(通过 chrome inspect 出来的),它是通过向已有的 div 里追加 div。
我想用 driver 去获取 div 里面的元素的时候(比如 driver.find_element_by_css_selector),提示:

File "D:\Miniconda3\envs\mypy36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 598, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "D:\Miniconda3\envs\mypy36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "D:\Miniconda3\envs\mypy36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "D:\Miniconda3\envs\mypy36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 241, in check_response
raise exception_class(message, screen, stacktrace, alert_text)
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message: unexpected alert open
(Session info: webview=)
(Driver info: chromedriver=2.13.307647 (5a7d0541ebc58e69994a6fb2ed930f45261f3c29),platform=Windows NT 6.1 SP1 x86_64)

我也在网上搜索了很多,已做了以下测试:

  1. alert = driver.switch_to.alert。
    但是获取不到 alert 的 text,而且使用 alert.accept() 或者 alert.dismiss() 的时候提示 unhandled inspector error: {"code":-32603,"message":"No JavaScript dialog to handle"}
    我感觉应该不是 alert,当时也是死马当活马医

  2. 测试了以下 switch_to。
    测试 driver.switch_to.active_element 或者 driver.switch_to.default_content() 依然提示 UnexpectedAlertPresentException: Alert Text: None
    测试 driver.switch_to.window,这个弹窗也不是窗口

  3. modal dialog(模态弹窗)
    https://segmentfault.com/q/1010000010453359?sort=created
    https://www.oschina.net/question/5012_28561
    通过这两篇文章,我大概知道这应该是个模态对话框,但是我 WebDriverWait(driver,60000).until(EC.visibility_of_element_located((By.XPATH,'//div[@class="container"]/div[@class="content"]'))) 的时候依然提示 UnexpectedAlertPresentException: Alert Text: None。而且运行时间远远没有达到设置的 60000。

  4. 如果我提前点击按钮,让弹窗显示出来,再用 driver.find_element_by_xpath 就完全没问题。感觉这个弹窗直接让 driver 卡住了。

依然没有解决方案,还请各位大佬不吝指教。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册