2015-07-28 3 views
2

Я попытался использовать Java + Selenium для автоматического входа в мою учетную запись Gmail, но каждый раз, когда я заблокирован Google. Когда я вхожу в систему вручную (даже на том же сервере), у меня нет такой проблемы. Кроме того, если я использую «sendKeys» типа lib (https://pypi.python.org/pypi/SendKeys/0.3), у меня нет такой проблемы.Selenium: sendKeys()

Мой вопрос заключается в два раза:

  1. Каковы технические различия между тем, как Селен «посылает ключи» и как обычный пользователь будет? Или как библиотека Python?

  2. Есть ли способ изменить селен, чтобы он имитировал реального пользователя? Или есть ли другая библиотека вместо Selenium, которая имитирует реального пользователя?

Благодаря

+0

Поделитесь своим кодом, который вы написали, чтобы войти в систему gmail. Он должен работать. –

+1

Вы проверили это [для входа в Gmail] (http://stackoverflow.com/questions/31220604/div-tag-acting-as-buttons-and-also-dynamic-buttons-like-delete -report-spam-et/31230799 # 31230799) – Madhan

ответ

1

На самом деле его разность скорости. Человек медленно, и сценарий пишет его очень быстро. Таким образом, вы должны уменьшить скорость вашего скрипта. Так что в целом вы должны построить лучшего бота. Улучшенные боты не будут обнаружены ни одним сервером.

0

Вы должны включить некоторую задержку в свой код, чтобы обмануть Google, что ваш код является реальным человеком - вот и все :) Thread.sleep может быть самым простым решением здесь.

0

Открыть Gmail & Логин & открыт последний получил почта

DriverObj.get("http://www.gmail.com"); 
       DriverObj.findElement(By.id("gmail-sign-in")).click(); 
       DriverObj.findElement(By.id("Email")).sendKeys("youremailID"); 
       DriverObj.findElement(By.id("next")).click(); 
       DriverObj.findElement(By.id("Passwd")).sendKeys("yourpassword"); 
       DriverObj.findElement(By.id("signIn")).click(); 
       Thread.sleep(2000); 
      WebElement tableelement=DriverObj.findElement(By.xpath("//div[@class='Cp']/div/table//tbody")); 
      java.util.List<WebElement> tableelement1=tableelement.findElements(By.xpath("//div[@class='Cp']/div/table//tbody/tr")); 
      int tableelementsize=tableelement1.size(); 
      int i; 
      if(tableelementsize>0){ 
       //DriverObj.navigate().refresh(); 
       for(i=0;i<tableelementsize;i++){ 
        DriverObj.findElement(By.xpath("//div[@class='Cp']/div/table//tbody/tr/td[6]")).click(); 
       } 

      }else { 
       if(tableelementsize==0){ 
        DriverObj.navigate().refresh(); 
        for(i=0;i<tableelementsize;i++){ 
         DriverObj.findElement(By.xpath("//div[@class='Cp']/div/table//tbody/tr/td[6]")).click(); 
        } 
       } 

путь почтового ящика может быть изменен (вы должны изменить в соответствии с вашей работой)

0

Ответ на 1-й вопрос: SendKeys () относится к вводу пользователя в конкретное текстовое поле на веб-странице, где мы также можем использовать javascriptExecuter для той же операции.

Ответ на второй вопрос: По моим знаниям НЕТ. но я не уверен в этом.

В Java используйте следующий код для входа в Gmail.

Однако я могу сказать, после нажатия на кнопку Войти на странице Входящие требуется время для загрузки (примерно в 10 секунд максимум)

Таким образом, в момент, если вы ищете другого элемента без ожидания (явного или неявного), то это вызовет ошибку. (http://www.gmail.com/);

driver.findElement (By.id («Email»)). SendKeys («userName»);

driver.findElement (By.id («next»)). Click();

driver.findElement (By.id («Passwd»)). SendKeys («пароль»);

driver.findElement (By.id ("signIn")). Click();

Затем вы можете использовать Thread.sleep (10000), или если вы написали какой-либо метод ожидания, чтобы заставить драйвер ждать, пока следующий объект станет видимым, вы можете использовать его.

0

Абсолютно, Selenium просто предоставляет библиотеку для написания автоматизированных тестовых сценариев. Если вы хотели действовать как человек. Затем вы должны добавить несколько команд ожидания между этапами тестирования в весь скрипт. Пока вы не добавили никакого ожидания в скрипт, он будет вести себя как роботизированный тест. Если вы примете какие-либо примеры инструмента автоматизации тестирования, инструмент не добавляет дополнительной информации/действий в области автоматизации тестирования. Что такое автоматическое тестирование ... Это не автоматическое тестирование. Это просто компьютерное тестирование, выполняемое машиной. Надеюсь, теперь вы будете более ясны с приведенным выше примером.

+0

Здравствуйте, vishal8, можете ли вы подробнее рассказать о своем решении? Также попробуйте включить веб-сайты в качестве источника или ссылки и, при необходимости, код. – 0rkan

+0

Hi @ 0rkan Я не думаю, что для разработки вышеуказанных вопросов требуется никаких ссылок или демо-кода. Я добавил несколько ключевых моментов, которые очень полезны для понимания выполнения теста на селен. – Vishal

-1

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

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