Java WebDriver&x2B;TestNG Gmail是一个奇怪的错误
我尝试从Gmail自动发送电子邮件,并使用TestNG和页面对象模式,浏览器FireFox,但首先是部分代码=) 我正在查看带有帮助注释(页面对象模式)的定位器,然后转到我在测试中使用的函数Java WebDriver&x2B;TestNG Gmail是一个奇怪的错误,java,selenium,xpath,gmail,Java,Selenium,Xpath,Gmail,我尝试从Gmail自动发送电子邮件,并使用TestNG和页面对象模式,浏览器FireFox,但首先是部分代码=) 我正在查看带有帮助注释(页面对象模式)的定位器,然后转到我在测试中使用的函数 @FindBy (how=How.XPATH, using = "//div[@class='T-I J-J5-Ji T-I-KE L3']") public WebElement writeMail; @FindBy (how=How.XPATH, using = "//textarea[@class=
@FindBy (how=How.XPATH, using = "//div[@class='T-I J-J5-Ji T-I-KE L3']")
public WebElement writeMail;
@FindBy (how=How.XPATH, using = "//textarea[@class='vO']")
public WebElement adressTo;
@FindBy (how=How.XPATH, using = "//input[@class='aoT']")
public WebElement subjectOfMail;
@FindBy (how=How.XPATH, using = "//body[@role='textbox']")
public WebElement contentMail;
@FindBy (how=How.XPATH, using = "//div[@class='T-I J-J5-Ji aoO T-I-atl L3']")
public WebElement sendMail;
public void writeMail(String adress, String subject) {
writeMail.click();
adressTo.sendKeys(adress);
subjectOfMail.sendKeys(subject);
webDriver.switchTo().frame(webDriver.findElement(
By.xpath("//iframe[contains(@tabindex,'1') and contains(@frameborder,'0')]")));
webDriver.findElement(By.xpath("//body[@role='textbox']")).sendKeys("Test");
webDriver.switchTo().defaultContent();
sendMail.click();
}
据称必须工作,但记录只在地址和主题字段中,测试失败后,记录在日志中:
“无法定位元素:{“方法”:“xpath”,“选择器”:”//body[@role='textbox']“}”
但如果我评论的话
//adressTo.sendKeys(adress);
//subjectOfMail.sendKeys(subject);
webdriver
按计划切换到iframe
,在信体中写入文本,然后单击“发送”按钮
请向我解释一下,为什么这段代码作为一个简单的java应用程序可以正常工作,但在我的示例中,当我在测试(TestNG)中使用它时,它在中不能正常工作?您正在使用
@role='textbox'
搜索元素:
//正文[@role='textbox']
但您要查找的元素实际上是一个
容器:
因此,请改用以下XPath:
//div[@role='textbox']
好吧,问题的解决方案是在这里找到的,但我想知道为什么旧的hpath工作得如此奇怪。谢谢大家的关注。你到底为什么要使用web界面和selenium发送电子邮件?请告诉我这样做有一个很好的理由(那么我真的会对它感兴趣,因为这似乎是一个奇怪的想法),或者它只是为了教育目的。。。否则:使用SMTP。它是专为发送邮件而设计的,工作完全正常,不会因GMail的下一次网络界面更新而中断。这不是我的突发奇想。这是我工作中的一项任务(初级QA测试工程师)。我可以想象在测试中有这样做的理由。祝你好运。:)对不起,不行。今天我甚至无法将xpath转换为“body letter”,但昨天它成功了。谷歌似乎每小时都在修改他的代码(