Java 为什么警报没有出现?

Java 为什么警报没有出现?,java,selenium,testing,automation,alert,Java,Selenium,Testing,Automation,Alert,我试着把它写成代码 driver.findElement(By.xpath("//*[@id='adduser']/div/form/div[2]/div/div/label")).click(); Thread.sleep(1000); Alert alert = driver.switchTo().alert(); String alertMessage = driver.switchTo().alert().getText(); System.out.println(alertMessa

我试着把它写成代码

driver.findElement(By.xpath("//*[@id='adduser']/div/form/div[2]/div/div/label")).click();
Thread.sleep(1000);

Alert alert = driver.switchTo().alert();
String alertMessage = driver.switchTo().alert().getText();
System.out.println(alertMessage);
alert.accept();
我发现类似“无警报存在”的错误消息

下面是完整的Java代码

package AddUser;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;

public class CheckFirstname
{
    public static WebDriver d;

    public static void main(String []args)throws Exception{
       System.setProperty("webdriver.firefox.marionette", "pathToGeckodriver");
       FirefoxDriver driver = new FirefoxDriver();

       driver.get("http://54.68.159.204/qmsadm");
       driver.manage().window().maximize();
       WebElement element = driver.findElement(By.name("username"));
       element.sendKeys("user name");
       element = driver.findElement(By.name("password"));
       element.sendKeys("password");
       element.submit();
       element = driver.findElement(By.linkText("Admin"));
       element.click();
       element = driver.findElement(By.linkText("Users"));
       element.click();
       element = driver.findElement(By.xpath("//*[@id='search-container']/a/i"));
       element.click();

       element = driver.findElement(By.id("username"));
       element.sendKeys("#!#!#$@#!$@!$@#$%#%^#$^^&%&$%*");

       driver.findElement(By.xpath("//*[@id='adduser']/div/form/div[2]/div/div/label")).click();
       Thread.sleep(1000);

       WebDriverWait wait = new WebDriverWait(driver, 0);

       wait.until(ExpectedConditions.alertIsPresent());

       Alert alert = driver.switchTo().alert();

       alert.accept();
   }
}


这是屏幕截图。在这里,您可以选中一个警报框。我想弹出这个警报窗口。我试了好几次,但都没用。

这样做:

在尝试切换到警报之前,它必须存在。

driver.findElement(By.xpath("//*[@id='adduser']/div/form/div[2]/div/div/label")).click(); Thread.sleep(1000);
wait.until(ExpectedConditions.alertIsPresent());

Alert alert = driver.switchTo().alert();
alertText = alert.getText();
alert.accept();
以及为什么您在这里得到警报
alert alert=driver.switchTo().alert()如果您未在以下行中使用
String alertMessage=driver.switchTo().alert().getText(),您只是在编写它。希望能有帮助。
下面是完整的java代码

package AddUser;



import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;

    public class CheckFirstname 
    {
    public static WebDriver d;
        public static void main(String []args)throws Exception{
           System.setProperty("webdriver.firefox.marionette","pathToGeckodriver");
           FirefoxDriver driver=new FirefoxDriver();


           driver.get("http://54.68.159.204/qmsadm");
           driver.manage().window().maximize();
           WebElement element=driver.findElement(By.name("username"));
           element.sendKeys("geosony");
           element=driver.findElement(By.name("password"));
           element.sendKeys("1");
           element.submit();
           element=driver.findElement(By.linkText("Admin"));
           element.click();
           element=driver.findElement(By.linkText("Users"));
           element.click();
           element=driver.findElement(By.xpath("//*[@id='search-container']/a/i"));
           element.click();




           element= driver.findElement(By.id("username"));
           element.sendKeys("#!#!#$@#!$@!$@#$%#%^#$^^&%&$%*");

           driver.findElement(By.xpath("//*[@id='adduser']/div/form/div[2]/div/div/label")).click();
           Thread.sleep(1000);

        WebDriverWait wait = new WebDriverWait(driver, 30 );

            wait.until(ExpectedConditions.alertIsPresent());

        Alert alert = driver.switchTo().alert();

        alert.accept();






        }   
    }

然后您需要首先检查它的JavaScript警报或htmli@saurabh这是一个javascript警报我在线程“main”org.openqa.selenium.TimeoutException中发现此错误异常:预期条件失败:等待警报出现(以500毫秒的间隔尝试0秒)你能在创建webdriver对象的地方发布完整的代码吗?当然有一些问题……这里,WebDriverWait wait=new WebDriverWait(driver,0);你已经给了等待时间,给点时间,伙计,也许20,30。您的错误清楚地说明了我尝试放置30的时间为0秒。我在线程“main”org.openqa.selenium.TimeoutException中发现了错误异常:预期条件失败:等待警报出现(尝试了30秒,间隔500毫秒),感谢响应,我得到了它。实际上,问题在于警报框不是javascript警报。这是一个html警报。我失去了很多时间。