Локализиране на Gmail Password field
Колеги, от няколко часа се мъча да се логна в Gmail и леко удрям на камък. Полето Email го минавам абсолютно стандартно с id и след това sendKeys(); На следващата страница , когато ми излиза Password кода гърми. NoSuchElementException, което доколкото разбрах означава, че на намира такъв елемент. Използвам Идето на Селениум и то ми показва няколко варианта за мачване на въпросното поле, сред които:
-//input[@id='Passwd'], като xpath.
-id=Passwd , като id.
-css=#Passwd, като cssSelector.
Изпробвам всичките варианти и всеки път достигам до тази грешка. Сигурен съм , че това е локацията , но не разбирам защо идва грешката. Ще ви бъда благодарен за малко помощ.
Поздрави!
Сега погледнах. Не използвам. Принципа ми е : WebElement passField=drive.findElement(By. // и тук вече според зависи какво търся); После passField.sendKeys( и тук паролата);
Гледам да спазвам точно инструкциите.
Инструкциите на лаб - а ли спазваш? Там (abv.bg) email и password са на 1 страница и полетата са се заредили вече. В gmail двете полета са на различни страници.
(https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/#identifier)
(https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/#password)
Не от лаб-а. Те са различни. Трябваше да сваля и chromedriver.exe , за да влезе изобщо в Chrome. И да - Първа страница минава без проблем, това е полето с юзъра и на втора страница гърмим, опитвайки се да локирам полето с паролата. Не схващам защо.
Не съм намерила кои инструкции използваш.
Ако искаш пробвай следното:
преди да работиш с password
Ако искаш може да покажеш и кода ти.
И продължавам да си мисля, че кода ти е по - бърз от зареждането на втората страница и затова има грешка - web driver не намира елемента, защото не се е заредил така бързо, както ти се изпълнява програмата.
Ето го и кода, който ползвам:
Не знам каква е причината. Може и да си права. Пробвах с твоят съвет, като сложих нишката преди зареждането на втората страница но грешката е идентична.
Става ли да пробваш да махнеш "css=" от string - a, който подаваш на cssSelector метода
от
и да остане така:
Пробвах и така. И така и с нишката и пак същата грешка. Стейндж е цялата работа.
Работи си ти с кода с имплицитен wait, който го сложих преди да търси елемент с id=Passwd.
Ако трябва експлицитен wait, тогава:
Целия метод: http://pastebin.com/hmpMxVut
Резултата: http://screencast.com/t/w7QZemfUF
Може би е добре да си смениш паролата за пощата :)
Дааа, аахахахах благодаря ти за отделеното време и предоставените варианти. А за пощата...хем щях да внимавам, хем нещо недогледах май накрая и я постнах. Ще сменя паролата и мерси отново!-Сега ще пробвам последния вариант.
Поздрави!
Правилно е да използваш explicit wait, ако се отнася за конкретен елемент.
Ако ти е интересно и искаш да разбереш защо, може да погледнеш тук в тази тема, където сме го дискутирали.