Как оптимизировать оценку кода в Selenium с Python - PullRequest
1 голос
/ 27 апреля 2020

Я хотел бы извлечь текст диапазона, расположенный в классе 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 раза.

Могу ли я знать, если есть способ сделать приведенный выше код более эффективным?

1 Ответ

1 голос
/ 27 апреля 2020

Используйте блок 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...