首页 > 解决方案 > 如何使用 Python 优化 Selenium 中的代码评估

问题描述

我想提取位于 SOME_CLASS_NAME中的跨度文本。该类 可能 SOME_CLASS_NAME并不总是可用。此外,如果该类确实存在,则需要一些时间才能正确显示。

为了解决这个问题,提出了以下代码。

肮脏的解决方法来检查类是否可用

size_len = WebDriverWait(self.browser, 20).until(EC.presence_of_element_located(
                    (By.XPATH, './/span[@class = "SOME_CLASS_NAME"]')))

或者

 if len( self.browser.find_elements_by_xpath('.//span[@class = "SOME_CLASS_NAME"]') ) > 0 :  
        element =self.browser.find_elements_by_xpath( './/span[@class = "SOME_CLASS_NAME"]' )[ 0 ].text
    
 else:
         element = '0'

虽然上述方法有效,但是,我发现评估类 3 次非常低效。

请问有没有办法让上面的代码更有效率?

标签: pythonperformanceselenium

解决方案


使用 try..except 块并使用visibility_of_element_located() 代替presence_of_element_located()

try:
    print(WebDriverWait(self.browser, 10).until(EC.visibility_of_element_located((By.XPATH, './/span[@class = "SOME_CLASS_NAME"]'))).text)
except:
    print("element no available")

推荐阅读