Автоматизация экспорта Azure Редакции рабочего конвейера Devops с использованием Python Selenium Webdriver - PullRequest
1 голос
/ 23 марта 2020

В настоящее время я использую Azure Devops Pipeline OData Service для экспорта данных по следующей ссылке:

 https://<CompanyName>.analytics.visualstudio.com/<ProjectName>/_odata/v2.0/WorkItemRevisions?$apply=filter(CreatedDateSK%20eq%20<Date>%20and%20WorkItemType%20eq%20%27<WorkItemType%27)

, и я использую инструмент извлечения (Talend DI) для автоматического изменения этих параметров, и Я использую код python (Selenium Library), чтобы перебрать вышеупомянутую ссылку, используя базовую c аутентификацию.

Есть ли другое альтернативное решение, кроме селена, для выполнения этой задачи. Поскольку селеновый веб-драйвер выдает ошибку времени ожидания при загрузке oage большого размера.

try:
        content_element=expected_conditions.visibility_of_element_located((By.XPATH,contentElementID))
        WebDriverWait(driver,15).until(content_element)
        break
    except TimeoutException:
        if(i==14):
                driver.quit()
                raise TimeoutException

1 Ответ

0 голосов
/ 24 марта 2020

Вы можете использовать HTTP-библиотеку запросов для вызова службы OData. Пожалуйста, проверьте приведенный ниже пример кода:

import requests
import json
import base64

if __name__ == "__main__":

    pat = 'Personal access token'
    authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii')

    headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Basic '+authorization
    }       

    url = "https://<CompanyName>.analytics.visualstudio.com/<ProjectName>/_odata/v2.0/WorkItemRevisions?$apply=filter(CreatedDateSK%20eq%20<Date>%20and%20WorkItemType%20eq%20%27<WorkItemType%27)"

    #you can also use below domain dev.azure.com, which is the new domain of azure devops service
    #url = "https://analytics.dev.azure.com/{org}/{proj}/_odata/v2.0//WorkItems?`$select=WorkItemId,Title,State&`$expand=Parent(`$select=WorkItemId,Title,State)&`$filter=WorkItemId eq 12"

    response = requests.get(url, headers=headers)

    print(response.content)

Пожалуйста, проверьте здесь , чтобы получить токен доступа Person с нужной областью разрешения.

...