【发布时间】:2021-05-27 01:43:30
【问题描述】:
我的 Selenium 测试遇到了最奇怪的问题。 我有以下课程:
class DataStorageTestSuiteChrome(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path="chrome_driver_path")
self.driver.maximize_window()
self.driver.get("www.data_storage_website.com")
self.page = DataStoragePage(self.driver)
def tearDown(self):
self.driver.quit()
def test_sn_validation(self):
self.page.sn_element = 20001234567 # This line takes 2.5min to execute in Linux
self.assertFalse(self.page.is_valid_sn())
self.page.sn_element = self.ID_GENERATOR.sn
self.assertTrue(self.page.is_valid_sn())
class DataStoragePage:
'''Page Object for DataStorage page'''
sn_element = SnElement()
def __init__(self, driver):
self.driver = driver
class SnElement:
'''This class gets the search text from the specified locator'''
locator = "some_working_locator"
def __set__(self, obj, value):
"""Sets the text to the value supplied"""
driver = obj.driver
WebDriverWait(driver, 100).until(
lambda driver: driver.find_element(By.XPATH, self.locator))
driver.find_element(By.XPATH, self.locator).clear()
driver.find_element(By.XPATH, self.locator).send_keys(value) # This line takes 2.5min to execute in Linux
现在,问题是测试用例“test_sn_validation”在 Windows 中执行需要几秒钟(都开启和关闭无头模式),而在 WSL2 Ubuntu 中需要 2.5 分钟。这显然让我很困惑,因为我希望这样的测试在 Linux 上运行得更快。
由于 send_keys() 方法,我已经跟踪到 SnElement 类中的 driver.find_element(By.XPATH, self.locator).send_keys(value) 行为缓慢的原因。此外,这种延迟只发生在第一次运行 send_keys() 时——我通过 PDB 运行的每次后续执行都是瞬时的。
有没有人在 WSL2 中看到 send_keys() 的类似行为,并且可以推荐解决方案?
【问题讨论】:
标签: python selenium selenium-webdriver xpath