Webdriver, чтобы открыть почту в Gmail - PullRequest
3 голосов
/ 03 мая 2011

Я начал использовать Webdriver для автоматизации нашего тестирования, которое на 100% ручное.

В одном из случаев использования мне нужно щелкнуть ссылку, отправленную в почтовый ящик пользователя.В этом случае у меня проблемы с Gmail.После входа в систему я не могу понять, как открыть конкретное письмо.

Я знаю тему письма и т. Д., Но не могу использовать его для доступа к элементу.Gmail получает все свои данные в формате JSON, а затем создает всю страницу с помощью функций js.Таким образом, веб-драйвер не может получить доступ ни к одному из элементов, созданных с использованием полученных данных JSOn.

Любая помощь очень ценится.

Спасибо, Крис.

Ответы [ 9 ]

10 голосов
/ 06 декабря 2011

Я бы предложил НЕ использовать пользовательский интерфейс для проверки Gmail. Пользовательский интерфейс Gmail чрезвычайно сложен и является ловушкой. Для меня автоматизация с селеном не является решением вообще.

Рассмотрите возможность использования JavaMail API и HTTPURLConnection . Это то, что я делаю в похожем сценарии тестирования.

Во время выполнения теста веб-драйвера, после выполнения определенных действий, если вы ожидаете, что электронная почта, затем с помощью JavaMail API опрос (для определенного тайм-аута, если он не немедленный) для электронной почты в фоновом режиме с определенной «темой» или «отправитель» и т. д. После того, как письмо найдено, возьмите ссылку из содержимого письма и смоделируйте щелчок, используя HTTPURLConnection

2 голосов
/ 22 июля 2011

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

//div [@class='y6']/span[contains(.,'<your original search text>')]

имейте в виду, что Google отрежет тему, что приведет к чему-то похожему на 'тему... 'если предмет слишком длинный.Мы используем уникальный номер для идентификации сообщений в нашей автоматизированной тестовой среде.

1 голос
/ 21 мая 2012

В моем случае я нашел решение, используя класс действий веб-драйвера

Предварительное условие: вашему драйверу необходимо перейти к определенному фрейму, чтобы найти элемент

wd.switchTo().frame("canvas_frame");

Шаг 1) Найдите конкретное электронное письмо, созданное / сгенерированное с помощью кода ниже

String searchvalue="html/body/div[1]/div[2]/div/div[1]/div[3]/div/div[1]/div[2]/div[2]/div/form/fieldset[2]/div/div/div[2]/input";
wd.findElement(By.xpath(searchvalue)).sendKeys(sendkeys);
String clickSearch=".//*[@id='gbqfb']";
wd.findElement(By.xpath(clickSearch)).click();

Шаг 2) Теперь используйте класс Actions для навигации.

Actions action= new Actions(wd);
    action.click(firstrecord).build().perform();

Надеюсь, это поможет!

1 голос
/ 03 мая 2011

Не думаю, что я правильно понял ваш вопрос, но, полагаю, у вас возникли проблемы с поиском локатора, чтобы открыть письмо после ввода текста в поле поиска gmail.*

используйте это как идентификатор элемента перед кликом по нему.

Надеюсь, это поможет.

0 голосов
/ 18 апреля 2016

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

    for i in xrange(int(num)):
    time.sleep(3)
    m=random.randint(1,10)
    print("Mail Number "+str(m)+" is selected")
    browser.find_element_by_xpath("//div[@role='tabpanel'][1]//table//tr"+str([m])).click()
    time.sleep(3)
    browser.find_element_by_xpath('//*[@id=":5"]/div[2]/div[1]/div/div[1]/div/div/div').click()
0 голосов
/ 15 декабря 2015

Вы также можете использовать это, если хотите открыть определенное письмо в gmail:

driver.findElement(By.xpath("//tr[i[td[4[div[contains(@class,'yW')]]]")).click();

Здесь i - это номер почты, который вы хотите

0 голосов
/ 21 октября 2015

Текущий локатор для тела gmail:

driver.findElement(By.className("LW-avf")).click();
driver.findElement(By.className("LW-avf")).clear();
driver.findElement(By.className("LW-avf")).sendKeys("your body message");
0 голосов
/ 08 мая 2013

Следующая команда selenese будет делать:

clickAt | //table/tbody/tr/td[5]/div[@class='yW'] |

Нажмите на поле FROM первой / недавней / самой верхней почты, чтобы перейти на страницу сведений о почте. // примечание: tr для первого письма, tr[2] для второго и т. д.

0 голосов
/ 05 декабря 2011

Приведенный выше ответ верен для идентификации почты в Gmail, если мы заменим тему.Я пытался с помощью Selenium IDE найти объект с целью как

xpath=//div [@class='y6']/span[contains(.,'<your original search text>')]

Объект был найден, но щелчок не открывает почту.

Поэтому после некоторого исследования я обнаружил, что метод mouseDownработает с вышеупомянутым xpath, чтобы открыть почту.Таким образом, команда будет в IDE

selenium.mouseDown("xpath=//div [@class='y6']/span[contains(.,'<your original search text>')]"); 

или

<td>mouseDown</td>
<td>xpath=//div[@class='y6']/span[contains(.,'£10 OFF when you spend £30 or more online')]</td>
<td></td>

.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...