我已经开始使用Webdriver自动化我们的测试,这是100%手动。
在其中一个用例中,我需要点击发送到用户收件箱的链接。在这种情况下,我遇到了Gmail问题。登录后,我无法弄清楚如何打开特定的电子邮件。
我知道电子邮件主题等但我无法使用它来访问该元素。 Gmail会将所有数据作为JSON接收,然后通过js函数构建整个页面。因此webdriver无法访问使用收到的JSOn数据构建的任何元素。
非常感谢任何帮助。
谢谢, 克里斯。
答案 0 :(得分:10)
我建议不要使用UI来验证Gmail。 Gmail的用户界面非常复杂,这是一个陷阱。对我而言,使用硒自动化根本不是解决方案。
考虑使用JavaMail API和HTTPURLConnection。这就是我在类似的测试场景中所做的。
在运行webdriver测试时,在执行某些操作后,如果您希望发送电子邮件,然后使用JavaMail API轮询(对于某些超时,如果不是立即),对于背景中具有某些“主题”或“发件人”的电子邮件'等。找到电子邮件后,从电子邮件内容中抓取链接,然后使用HTTPURLConnection模拟点击
答案 1 :(得分:2)
如果您可以搜索特定的电子邮件,则可以使用以下代码找到您要查找的电子邮件:
//div [@class='y6']/span[contains(.,'<your original search text>')]
请注意,如果主题太长,谷歌会切断主题,从而产生类似“主题......”的内容。我们使用唯一编号来识别自动测试环境中的消息。
答案 2 :(得分:1)
我认为我没有正确回答您的问题,但我认为您在gmail的搜索框中输入文本后,无法找到定位器来打开邮件。
//div[5]/div/div/table/tbody/tr[n]" //n is the row no. of mailbox, for first result use 1 and like
在克隆之前将其用作元素的标识符。
希望这有帮助。
答案 3 :(得分:1)
就我而言,我通过使用Web驱动程序的Action类
找到了解决方案先决条件:您的驱动程序需要移动到特定框架以定位元素
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();
希望这会有所帮助!
答案 4 :(得分:0)
如果我们更换主题,上述答案对于在Gmail中识别邮件是正确的。 我已经尝试使用Selenium IDE来查找对象 目标为
xpath=//div [@class='y6']/span[contains(.,'<your original search text>')]
找到了该对象,但点击未打开邮件。
因此经过一些调查后我发现mouseDown方法正在使用上面的xpath来打开邮件。 所以命令将是
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>
在IDE中。
希望这有帮助。
答案 5 :(得分:0)
以下selenese命令可以:
clickAt | //table/tbody/tr/td[5]/div[@class='yW'] |
点击第一张/最近/最多邮件的FROM
字段,转到邮件详细信息页面。 //注意:第一封邮件为tr
,第二封邮件为tr[2]
,依此类推。
答案 6 :(得分:0)
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");
答案 7 :(得分:0)
试试这个,对我来说很完美。这将选择随机电子邮件,您也可以根据需要进行修改
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()
答案 8 :(得分:-1)
如果您想在Gmail中打开特定邮件,也可以使用此选项:
driver.findElement(By.xpath("//tr[i[td[4[div[contains(@class,'yW')]]]")).click();
此处i
是您想要的邮件编号