Java Selenium Webdriver通过js向表单发送电子邮件

Java Selenium Webdriver通过js向表单发送电子邮件,java,google-chrome,selenium-webdriver,Java,Google Chrome,Selenium Webdriver,我如何将电子邮件传递到 您只需单击“Professional-Start free试用版”,这是我需要使用selenium webdriver传递电子邮件的地方。我注意到提供您电子邮件的弹出窗口位于不同的框架中。您应该管理上下文切换: import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver;

我如何将电子邮件传递到


您只需单击“Professional-Start free试用版”,这是我需要使用selenium webdriver传递电子邮件的地方。

我注意到提供您电子邮件的弹出窗口位于不同的框架中。您应该管理上下文切换:

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Email extends BrowserFunctions{
public static void main(String args[]) throws InterruptedException{    
    System.setProperty("webdriver.chrome.driver", "Drivers//chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://www.wrike.com/price/");
    Thread.sleep(5000);
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", driver.findElement(By.id("start-free-trial-professional")));
    Thread.sleep(5000);
    driver.switchTo().defaultContent(); // you are now outside both frames
    driver.switchTo().frame("ajaxIframeFeatures");
    executor.executeScript("arguments[0].setAttribute('value', 'abc@gmail.com');", driver.findElement(By.id("email")));
    executor.executeScript("arguments[0].click();", driver.findElement(By.id("start-project")));
    Thread.sleep(5000);
}
}
很抱歉,使用了太多的
Thread.sleep()
,这通常不是一个好的做法。如果要提高性能,可以用
WebDriverWait
替换它

我希望有帮助:)