为什么我的 Selenium 测试不能使用沙盒登录页面?

why wont my Selenium test work with a sandbox sign in page?

我正在使用 Java Junit 在一个群建网站上做一些测试,测试一直进行到它打开一个 paypal 沙盒页面。打开 pay pal 沙盒页面后,sendKeys() 函数将不会输入电子邮件地址,页面加载缓慢所以我使用 Thread.sleep 来尝试减慢 sendkeys 激活,因为我认为这可能有助于如何发送键仍然无法正常工作。

代码如下:

public class PricesTest {

private Robot r;

private WebDriver webDriver;

     @Before 
     public void before() throws AWTException {
         ChromeOptions options = new ChromeOptions();
         options.addArguments("--start-maximized");
         webDriver = new ChromeDriver(options);     
    }


    @Test 
    public void buyTicket() throws InterruptedException, AWTException {
     Robot r = new Robot();
     webDriver.navigate().to("https://adamrate.github.io/groupThreeProject/#/price");
     Thread.sleep(500);
     r.mouseMove(1300, 680);
     Thread.sleep(500);
     int buttons = InputEvent.BUTTON1_DOWN_MASK;
     r.mousePress(buttons);
     r.mouseRelease(buttons);

    Thread.sleep(3000); 
   webDriver.findElement(By.cssSelector("#email")).sendKeys("qac@gmail.com");
}
}

最后一行是问题发生的地方

webDriver.findElement(By.cssSelector("#email"().sendKeys("qac@gmail.com");

CSS 通过右键单击并检查页面手动复制到选择器中,然后右键单击 HTML 代码并右键单击复制 -> 复制选择器我不是确定是什么问题,但我认为这可能是因为我正在使用 Pay Pal 的发送框环境,任何人都可以建议如何解决这个问题,或者至少解释一下发生了什么事。我对 Java 和 Junit 还是很陌生。我已经尝试 google 一个答案,但没有成功。

该电子邮件 ID 字段位于 iframe 内,所有其他元素也是如此。因此,您需要在访问其任何元素之前切换到 iframe-

    r.mouseRelease(buttons);
    WebDriverWait wait = new WebDriverWait(driver, 120);
 wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("injectedUl")));  
        webDriver.switchTo().frame(driver.findElement(By.name("injectedUl")));
        webDriver.findElement(By.cssSelector("#email")).sendKeys("qac@gmail.com");

此外,我建议您使用显式等待而不是隐式等待。使用隐式等待是一种不好的做法。