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

Фотография

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

webdriver selenium java authorization

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

#1 MoshneagaOleg

MoshneagaOleg

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

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

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

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


  • 0

#2 TatyanaV

TatyanaV

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

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


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

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

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


  • 0

#3 MoshneagaOleg

MoshneagaOleg

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

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

Отправлено 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
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 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
  • 48 сообщений
  • ФИО:Мошняга Олег Михайлович

Отправлено 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
  • 388 сообщений
  • ФИО:Воробьева Татьяна


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

 

 

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

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

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


  • 0

#7 MoshneagaOleg

MoshneagaOleg

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

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

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

 

 

 

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

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

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

 

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


  • 0

#8 TatyanaV

TatyanaV

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

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


Отправлено 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



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

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

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