2016-04-22 2 views
1

С помощью python я пытаюсь использовать поставщик учетных данных для предоставления учетных данных при подключении к веб-сайту для автоматического тестирования графического интерфейса с помощью селена. Я нашел следующее page, который объясняет, как сделать это, возможно, для JAVA:Как использовать учетные данные в селене с помощью python?

@Override 
protected WebClient newWebClient() { 
    WebClient client = super.newWebClient(); 
    DefaultCredentialsProvider provider = new DefaultCredentialsProvider(); 
    provider.addCredentials("username","password"); 
    client.setCredentialsProvider(provider); 
    return client; 
    } 

Я пытаюсь pythonize, но я столкнулся с проблемами, и я не нашел соответствующее имя класса Ф.Р. DefaultCredentialsProvider:

from selenium import webdriver as original_webdriver 

class webdriver(original_webdriver): 
    def newWebClient(self): 
     client = super().newWebClient() 
     provider = DefaultCredentialsProvider() 
     provider.addCredentials("username","password") 
     client.setCredentialsProvider(provider) 
     return client 

ошибка при запуске этого сценария является:

File "C:/Users/adi0341/PycharmProjects/SeleniumTest/tester.py", line 12, in <module> 
    class webdriver(original_webdriver): 
TypeError: module.__init__() takes at most 2 arguments (3 given) 

Как это исправить? Или как сделать что-то подобное, как описано в этой ссылке? Может быть, существует совсем другой подход, чтобы обеспечить аутентификацию, чтобы открыть веб-страницу для автоматизированного GUI-тестирования селена?

P.S: Аутентификация будет неотъемлемой частью самого тестирования. Вход в систему как разные пользователи и проверка прав доступа ...

+0

Очевидно вы создаете класс 'webdriver' с двумя аргументами (+ self) вместо 1 аргумента (+ self). Предоставить больше кода – Andersson

ответ

0

Можете указать, какая строка 12? Я не уверен в вашей строке с супер, как в python наследование конструкторов выглядит в примере this.

0

DefaultCredentialsProvider корабль с Java HtmlUnit, а не webdriver. Таким образом, вы не можете найти его в WebDriver (будь то в Java WebDriver, ни Python WebDriver ни и т.д. WebDriver)

проверки эта ссылка: How do I handle authentication with the HtmlUnitDriver using Selenium WebDriver?

Вы можете проверить, есть ли аналогичный питон счетчик часть для DefaultCredentialsProvider. В противном случае ответ будет таков: в python для вас нет DefaultCredentialsProvider.

Может быть, вы должны искать другие решения аутентификации, например, следующим образом: Authentication with selenium (Python)

1

Шаг 1

Для этого требования использовать keyring

import keyring 
keyring.set_password("https://my.sharepoint.come", "username", "password") 

После этого учетные данные будут храниться под dentials менеджер для автоматического входа в систему, вы можете запустить эту control /name Microsoft.CredentialManager команду в командной строке, чтобы получить его:

enter image description here

Недавно добавленные учетные данные будут отображаться в разделе «Generic мандатной»

enter image description here

Еще больше, прежде чем писать код, вы можете проверить это вручную.

Шаг 2

После того, как вы через это, вы должны установить предпочтение Firefox, чтобы держать свой адрес под network.automatic-ntlm-auth.trusted-uris:

from selenium import webdriver 
url = 'http://my.sharepoint.com' 
fp = webdriver.FirefoxProfile() 
fp.set_preference('network.automatic-ntlm-auth.trusted-uris',url) 
driver = webdriver.Firefox(firefox_profile=fp) 
driver.get(url) 
+0

Кажется не работает. Я не вошел в систему с правильными учетными данными. Веб-страница sharepoint возвращает ошибку проверки подлинности. – Alex

+0

Вы можете зайти на сайт вручную? – Abbas

+0

Да, я; через всплывающее окно ... – Alex

Смежные вопросы