Перейти к содержимому

Программирование на Python для тестировщиков
онлайн, начало 21 сентября
Школа тест-менеджеров v. 2.0
онлайн, начало 26 сентября
Логи как инструмент тестировщика
онлайн, начало 24 сентября
Школа для начинающих тестировщиков
онлайн, начало 24 сентября
Фотография

Авторизация на сайте через соц.сети Webdriver

webdriver selenium java authorization

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 MoshneagaOleg

MoshneagaOleg

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Мошняга Олег Михайлович

Отправлено 25 Май 2018 - 09:39

В общем такая проблема пишу на webdriver+java тесты ui и получается что на сайте, где это тестирую, вход возможен только через авторизацию фэйсбук и прочее, дохожу по кликам до этого и когда нажимаю facebook, меня перекидывает на новое мини окно, чтобы ввести данные. Дело в том что я нахожу xpath от логина и пароля, но Webdriver выдает ошибку. 


  • 0

#2 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 297 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 25 Май 2018 - 10:30

У нас тут с экстрасенсами напряг - по отпускам разъехались...

Какую ошибку то выдает?


  • 0

#3 MoshneagaOleg

MoshneagaOleg

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Мошняга Олег Михайлович

Отправлено 25 Май 2018 - 10:55

У нас тут с экстрасенсами напряг - по отпускам разъехались...

Какую ошибку то выдает?

 Ну выдает окно новое, и после того как я пытаюсь driver.findElement(By.xpath("//*[@id=\"email\"]")).sendKeys("myemail");   // и ничего не происходит, а в консоли выбивает Process finished with exit code 1 // обычная ошибка  1 что все плохо и в какой строке
Есть какие-то мысли, или помощь как делать sign in from соц.сети


  • 0

#4 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 297 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 25 Май 2018 - 11:09

 

У нас тут с экстрасенсами напряг - по отпускам разъехались...

Какую ошибку то выдает?

 Ну выдает окно новое, и после того как я пытаюсь driver.findElement(By.xpath("//*[@id=\"email\"]")).sendKeys("myemail");   // и ничего не происходит, а в консоли выбивает Process finished with exit code 1 // обычная ошибка  1 что все плохо и в какой строке
Есть какие-то мысли, или помощь как делать sign in from соц.сети

 

 

Вы бы лучше привели полный текст ошибки, текст кода своего, как выглядит код страницы в этот момент и т.п..

"обычная ошибка" понятие растяжимое. По идее - там должен быть эксепшн.

Мне, к примеру, все еще не хватает информации в Вашем сообщении.


  • 0

#5 MoshneagaOleg

MoshneagaOleg

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Мошняга Олег Михайлович

Отправлено 25 Май 2018 - 11:28

 

 

У нас тут с экстрасенсами напряг - по отпускам разъехались...

Какую ошибку то выдает?

 Ну выдает окно новое, и после того как я пытаюсь driver.findElement(By.xpath("//*[@id=\"email\"]")).sendKeys("myemail");   // и ничего не происходит, а в консоли выбивает Process finished with exit code 1 // обычная ошибка  1 что все плохо и в какой строке
Есть какие-то мысли, или помощь как делать sign in from соц.сети

 

 

Вы бы лучше привели полный текст ошибки, текст кода своего, как выглядит код страницы в этот момент и т.п..

"обычная ошибка" понятие растяжимое. По идее - там должен быть эксепшн.

Мне, к примеру, все еще не хватает информации в Вашем сообщении.

 

Вот я еще не научился работать с эксепшенами, я прохожу курс на udemy скоро дойду и до этого

 

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

import java.util.concurrent.TimeUnit;

public class LoginOtkritkiok {

static WebDriver driver;

public static void main(String[] args) {

System.setProperty("webdriver.gecko.driver","C:\\Users\\User\\IdeaProjects\\testwebdriver\\drivers\\geckodriver.exe");

driver = new FirefoxDriver();

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);

String homepage = "https://otkritkiok.ru";

driver.get(homepage);

// WebElement cancel = driver.findElement(By.id("onesignal-popover-cancel-button"));
// cancel.click();

driver.findElement(By.xpath("//*[@id=\"top\"]/div/ul[2]/li/a")).click();

driver.findElement(By.xpath("//*[@id=\"app\"]/div[5]/div/div/div/div[2]/div/a[4]")).click();

driver.findElement(By.xpath("//*[@id=\"email\"]")).sendKeys();


// WebElement facebook = driver.findElement(By.xpath("/html/body/div[1]/div[5]/div/div/div/div[2]/div/a[4]"));
// facebook.click();

driver.quit();

}
}

 

 

 

 

 

 

 

//Vot tut exception

 

 

 

1527245643737    geckodriver    INFO    geckodriver 0.20.1
1527245643754    geckodriver    INFO    Listening on 127.0.0.1:26107
1527245645121    mozrunner::runner    INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\User\\AppData\\Local\\Temp\\rust_mozprofile.bx92LMTmXcpW"
Unable to read VR Path Registry from C:\Users\User\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\User\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\User\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\User\AppData\Local\openvr\openvrpaths.vrpath
1527245650804    Marionette    INFO    Listening on port 60088
1527245650835    Marionette    WARN    TLS certificate errors will be ignored for this session
мая 25, 2018 1:54:10 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Unable to read VR Path Registry from C:\Users\User\AppData\Local\openvr\openvrpaths.vrpath
JavaScript warning: https://www.googleta...d=UA-97109766-1, line 69: unreachable code after return statement
JavaScript warning: https://www.googleta...d=UA-97109766-1, line 69: unreachable code after return statement
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: //*[@id="email"]
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T14:04:26.12Z'
System info: host: 'WIN-Q12C9V40QDC', ip: '172.20.16.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_171'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 60.0.1, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 7892, moz:profile: C:\Users\User\AppData\Local..., moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: XP, platformName: XP, platformVersion: 10.0, rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}
Session ID: 7c642084-e74c-4f51-838f-c5933885b990
*** Element info: {Using=xpath, value=//*[@id="email"]}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:317)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:419)
    at org.openqa.selenium.By$ByXPath.findElement(By.java:353)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:309)
    at LoginOtkritkiok.main(LoginOtkritkiok.java:33)

Process finished with exit code 1


  • 0

#6 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 297 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 25 Май 2018 - 11:46

 

 

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: //*[@id="email"]

Эта строка говорит о том, что такого элемента на странице нет.

Либо локатор в принципе неверный, либо нужный Вам элемент лежит в другом фрейме - тогда прежде чем искать его, нужно в этот другой фрейм переключиться.


  • 0

#7 MoshneagaOleg

MoshneagaOleg

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Мошняга Олег Михайлович

Отправлено 25 Май 2018 - 11:57

 

 

 

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: //*[@id="email"]

Эта строка говорит о том, что такого элемента на странице нет.

Либо локатор в принципе неверный, либо нужный Вам элемент лежит в другом фрейме - тогда прежде чем искать его, нужно в этот другой фрейм переключиться.

 

Ситуация такая, при клике на авторизацию через фб меня кидает в новое окно и там уже это я ищу, поэтому оно и не видит (так по логике) А у вас есть какие-то полезные ссылки как это сделать. Буду очень благодарен, и так помогли уже многим


  • 0

#8 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 297 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 25 Май 2018 - 12:44

Ситуация такая, при клике на авторизацию через фб меня кидает в новое окно и там уже это я ищу, поэтому оно и не видит (так по логике) А у вас есть какие-то полезные ссылки как это сделать. Буду очень благодарен, и так помогли уже многим

    protected String getNewHandle(String mainPage) {
        Set<String> newHandles = driver.getWindowHandles(); // список открытых страниц
        newHandles.remove(mainPage); // удаление "изначальной" из списка
        for (String handle: newHandles)
            return handle; // возврат "новой" страницы
        return null; // null - если была открыта только "изначальная" страница, новых нет
    }

    public SomePage doSmthOnAnotherPage(String mainPageHandle) {
	String mainPageHandle = pages.getWebDriver().getWindowHandle(); // запомнить "текущую" страницу
        String newPageHandle = getNewHandle(mainPageHandle); // получить "новую", к этому моменту - Вы уже кликнули кнопки, после которых новая страница открывается
        driver.switchTo().window(newPageHandle); // переключение на "новую" страницу
       
        // тут делаете то, что нужно делать в другом окне
		
        backToMainPage(mainPageHandle); // возврат к "изначальной" странице
        return somePage.ensurePageLoaded();
    }
	
    public SomePage backToMainPage(String mainPageHandle) {
        Set<String> allHandles = driver.getWindowHandles(); // получает список страниц

        for (String handle : allHandles) { // перебор списка
            if (!handle.equals(mainPageHandle)) { // если текущая страница не "изначальная"...
                driver.switchTo().window(handle).close(); // ...закрыть её
            }
        }
        driver.switchTo().window(mainPageHandle); // переключиться на "изначальную" страницу

        return somePage.ensurePageLoaded();
    }

  • 0


Программирование на С# для тестировщиков
онлайн, начало 28 сентября
Автоматизатор мобильных приложений
онлайн, начало 5 сентября
Selenium WebDriver: полное руководство
онлайн, начало 14 сентября
Программирование на Python для тестировщиков
онлайн, начало 21 сентября




Темы с аналогичным тегами webdriver, selenium, java, authorization

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале