【问题标题】:python selenium disable os pop-upspython selenium 禁用操作系统弹出窗口
【发布时间】:2016-11-10 15:37:44
【问题描述】:

我正在尝试使用seleniumPython 中自动执行文件下载过程。到目前为止,我成功地编写了代码来实现它。但是有一个非常令人不安的小问题:每次我在Firefox(我使用webdriver.Firefox())中启动程序时,总是有一个操作系统弹出窗口询问我allow the website to use 'Microsoft Office'并阻止整个程序。由于是操作系统问题,我无法使用selenium 与之交互...我也尝试了driver.switch_to_alert() 方法,但没有成功。

你知道怎么解决吗?

非常感谢!!

【问题讨论】:

  • 显示您用于确认警报的确切代码。还要检查这张票stackoverflow.com/questions/26843852/… 似乎是同样的问题。它在Java,但解决方案应该非常相似
  • 一旦你switch_to_alert() 你接受/拒绝警​​报吗?
  • 您可以通过 XPATH 或 CSS 选择器检测弹出窗口,如果存在,请单击按钮。我解决了我的弹出窗口问题。
  • 这里我贴出下面的警报代码。但它不起作用,因为我得到的弹出框来自操作系统。
  • @Wonka 不,它来自系统,所以我无法通过 Xpath 或 CSS 跟踪它

标签: python selenium popup operating-system


【解决方案1】:
try:
        WebDriverWait(driver, 40).until(EC.alert_is_present(),
                                      'Timed out waiting for PA creation ' +
                                      'confirmation popup to appear.')

        alert = driver.switch_to.alert()
        alert.accept()

【讨论】:

    【解决方案2】:

    这是我的整个代码,弹出窗口出现在这两行之间(登录后):

    loginButtonElement.click()
    BBElement=WebDriverWait(driver,50).until(lambda driver:driver.find_element_by_xpath(BBButton))
    

    代码:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    import unittest
    import os
    
    
    
    
    class LoginTest(unittest.TestCase):
      def setUp(self):
    
        fp=webdriver.FirefoxProfile()
    
        fp.set_preference("browser.download.folderList",2)
        fp.set_preference("browser.download.manager.showWhenStarting",False)
        fp.set_preference("browser.download.dir", "D://doc")
        fp.set_preference("pdfjs.disabled", True)
        fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
        fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")
    
    
        self.driver=webdriver.Firefox(firefox_profile=fp)
        self.driver.get("myurl")
    
      def test_Login(self):
        driver=self.driver
    
        emailFieldID="userNameInput"
    
        passFieldID="passwordInput"
        loginButtonID="submitButton"
        BBButton="(//a[contains(@href,'blackboard')])"
        coursebutton="(//a[contains(@href,'Course&id=_4572_1&url')])[1]"
    
        docbutton="(//a[contains(@href,'content_id=_29867_1')])"
        conbutton="(//a[contains(@href,'content_id=_29873_1')])"
        paperbutton="(//a[contains(@href,'/xid-26243_1')])"
    
        emailFieldElement=WebDriverWait(driver,20).until(lambda driver:driver.find_element_by_id(emailFieldID))
    
        passFieldElement=WebDriverWait(driver,20).until(lambda driver:driver.find_element_by_id(passFieldID))
        loginButtonElement=WebDriverWait(driver,20).until(lambda driver:driver.find_element_by_id(loginButtonID))
    
        emailFieldElement.clear()
        emailFieldElement.send_keys("username")
        passFieldElement.clear()    
        passFieldElement.send_keys("password")
        loginButtonElement.click()
        BBElement=WebDriverWait(driver,50).until(lambda driver:driver.find_element_by_xpath(BBButton))
        BBElement.click()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多