为什么我在Edge上获得的ResourceWarning比Chrome还要多?

问题描述 投票:0回答:1

我已经和我的团队一起进行跨浏览器测试了一段时间,并且已经整理了我的Chrome测试。

因此,今天我决定尝试运行队友的Edge测试,并且收到ResourceWarning: Enable tracemalloc to get the object allocation traceback消息像疯了似的。大约每秒钟就会打印出1至3条相同的消息。

[我记得刚开始时在运行Chrome测试时偶尔会收到此消息,但从未达到我从Edge获得的最高水平。

我已经做了一些较小的研究(123,所以我知道这不会影响我的硒运行。

但是我很好奇为什么在幕后发生了什么事情,而不是在Chrome上导致了更多。

有关Edge驱动程序的特定信息,我使用Microsoft网站上的Edge版本80.0.361.66。我确实进行了一些配置测试,以查看是否有任何区别(驱动程序版本和边缘版本),但数量相同。

这特别奇怪,因为Edge使用铬。我想知道Selenium如何控制Edge是否存在问题。

这是Chrome最低可用代码示例

import time
import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

class test_state(unittest.TestCase):
    @classmethod
    def setUp(self):
        self.driver = Chrome('__tests__/drivers/chromedriver.exe')
        self.driver.maximize_window()
        self.driver.get("https://adbanker.com/")

    def test_state(self):
        try:
            url = self.driver.current_url
            print(url)
            time.sleep(5)
            title = self.driver.title
            print(title)
            WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.XPATH,'//*[@id="for"]')))
            lr = WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.ID,'statenav')))
            lr.click()
            ce = WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.XPATH,'//*[@id="line_dropdown"]/option[3]')))
            ce.click()
            ca = WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.XPATH,'//*[@id="state_dropdown"]/option[6]')))
            ca.click()
            time.sleep(5)
        except:
            raise


    @classmethod
    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

这是用于边缘的最小可行代码示例

import time
import unittest
from selenium.webdriver import Edge
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

class test_state(unittest.TestCase):
    @classmethod
    def setUp(self):
        self.driver = Edge('__tests__/drivers/msedgedriver.exe')
        self.driver.maximize_window()
        self.driver.get("https://adbanker.com/")

    def test_state(self):
        try:
            url = self.driver.current_url
            print(url)
            time.sleep(5)
            title = self.driver.title
            print(title)
            WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.XPATH,'//*[@id="for"]')))
            lr = WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.ID,'statenav')))
            lr.click()
            ce = WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.XPATH,'//*[@id="line_dropdown"]/option[3]')))
            ce.click()
            ca = WebDriverWait(self.driver, 10).until(ec.visibility_of_element_located((By.XPATH,'//*[@id="state_dropdown"]/option[6]')))
            ca.click()
            time.sleep(5)
        except:
            raise


    @classmethod
    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

我已经对此进行了更多研究,特别是此错误指向Selenium远程驱动程序中this file的第374行。

经过仔细检查,它在第374行遇到了if条件,只是不知道该怎么做,所以失败了。但是为什么呢?

python selenium selenium-chromedriver microsoft-edge
1个回答
0
投票

我已经对您的代码进行了测试,它将显示以下错误:“ ResourceWarning:未关闭”

我们可以尝试使用以下代码忽略此警告:

Python 3脚本:

if __name__ == '__main__':
    unittest.main(warnings='ignore')

更多详细信息,请检查Python 3 unittest docs

此外,您还可以参考this thread关闭资源。

© www.soinside.com 2019 - 2024. All rights reserved.