【问题标题】:How to close pop up window in Selenium如何在 Selenium 中关闭弹出窗口
【发布时间】:2016-05-02 10:35:08
【问题描述】:

无法关闭在http://www.cargo.lt/ 加载后立即出现的弹出窗口。这是我得到的:

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get('http://www.cargo.lt/asp/index.asp?')
time.sleep(10)
driver.find_element_by_xpath('/html/body/div[36]/div/a').click()

我对如何编写自定义 xpath/css 路径不是很熟悉,现在只需单击 Inspect 元素并复制 xpath。我做错了什么?

编辑: 多么愚蠢的错误。没有意识到当元素离开屏幕时 Selenium 无法点击它。刚刚添加了 driver.maximize_window() ,我所有的问题都消失了。谢谢大家的回答。不幸的是我还不能投票,因为我没有足够的积分......

【问题讨论】:

    标签: python selenium xpath web-scraping popup


    【解决方案1】:

    你好关闭弹出/警报请使用

    driver.switch_to_alert()
    

    然后使用

    driver.find_element_by_xpath('/html/body/div[36]/div/a').click()
    

    //如果你复制了粘贴的萤火虫格式,那么我猜它是正确的

    或者如果你的 xpath 不正确,那么使用

    driver.find_element_by_xpath("//a[@id='advert_x']").click()
    

    【讨论】:

      【解决方案2】:

      我试过你的代码它工作正常我不知道你有什么问题但是 试试这个:driver.implicitly_wait(10) 插入:

      time.sleep(10)
      

      【讨论】:

      • 隐式等待非常慢,应该不惜一切代价避免。当您添加隐式等待时,您基本上是在说:“在执行每个操作之前等待 X 秒”。如果您需要加载页面并且速度不够快,您应该在此页面上找到一个元素,该元素仅在加载后才出现在页面上。然后,您可以使用 WebDriverWait 等待此元素出现,从而加载页面。如果是一次性等待,则不使用 time.sleep()。
      【解决方案3】:

      您可以使用 python -Selenium 中的预定义命令切换到警报框。

      from selenium import webdriver
      
      driver = webdriver.Firefox()
      driver.get('http://www.cargo.lt/asp/index.asp?')
      alrt = driver.switch_to_alert()
      alrt.accept()
      

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        您可以使用 chrome 选项

        在 Python 中,你可以使用

        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument("--disable-notifications")
        webdriver.Chrome(os.path.join(path, 'chromedriver'),chrome_options=chrome_options)
        

        在java中

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--disable-popup-blocking");
        options.addArguments("test-type");
        ChromeDriver driver = new ChromeDriver(options);
        

        【讨论】:

          猜你喜欢
          • 2019-10-22
          • 1970-01-01
          • 1970-01-01
          • 2021-03-11
          • 2017-06-04
          • 2020-06-22
          • 2016-08-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多