Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebDriver&x2B;TestNG Gmail是一个奇怪的错误_Java_Selenium_Xpath_Gmail - Fatal编程技术网

Java WebDriver&x2B;TestNG Gmail是一个奇怪的错误

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=

我尝试从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='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”,但昨天它成功了。谷歌似乎每小时都在修改他的代码(