为什么我在Edge上获得的ResourceWarning比Chrome更多



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

所以今天我决定试着运行我队友的Edge测试,我收到了疯狂的ResourceWarning: Enable tracemalloc to get the object allocation traceback消息。大约每隔一秒钟,它就会打印出1到3条相同的消息。

我记得在一开始运行Chrome测试时偶尔会收到这条消息,但从来没有从Edge收到过这么多。

我做了一些小的研究(1,2,3(,所以我知道这不会影响我的Selenium跑步。

但我很好奇是什么在幕后发生的事情导致了Edge比Chrome更严重的问题。

有关我的Edge驱动程序的具体信息,我使用的是Microsoft网站上的Edge版本80.0.361.66。我确实做了一些配置测试,看看这是否有什么不同(驱动程序版本和边缘版本(,但数量仍然相同。

这特别奇怪,因为Edge使用Chromium。我想知道这是否是硒如何控制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的远程驱动程序中该文件的第374行。

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

我已经在我这边测试了您的代码,它将显示以下错误:"ResourceWarning:unclosed">

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

Python 3脚本:

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

更多详细信息,请查看Python 3单元测试文档。

此外,您还可以引用此线程来关闭资源。

升级到msedge v81并使用selenium==4.0.0a5,其中需要使用:

options = EdgeOptions()
#options.add_argument('headless')
#options.add_argument('disable-gpu')
options.add_argument('log-level=0')
options.use_chromium = True
#options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
self.driver = Edge(options=options)

在旧硒上,Edge((中没有use_chromium键。它比Chrome慢,而且它将大量调试转储到stdout中。

相关内容

  • 没有找到相关文章

最新更新