单击webelement直到隐藏

时间:2017-09-26 05:01:27

标签: java selenium selenium-webdriver

我有一个Web应用程序,我按下提交按钮,直到桌面上的数据可用。当我的数据不可用时,然后提交按钮隐藏。所以我们可以获得逻辑,直到提交按钮隐藏我们将点击。当按钮,而不是我们可以在成功消息中显示并加载下一个浏览器Url。

for (k=0;k>30;k++) {
    try {
       driver.findElement(By.xpath(".//*[@id='content']/input")).click();
       driver.switchTo().alert();
       driver.switchTo().alert().accept();
       Thread.sleep(20000);
    } catch (org.openqa.selenium.NoSuchElementException e){
       System.out.println(""+location+"  Done");
    }
}

此处driver.findElement(By.xpath(".//*[@id='content']/input")).click();此行单击我的提交按钮。提交后,一个浏览器警报显示这就是为什么我接受这个。在这个循环for (k=0;k>30;k++)盲目地我采取30 ..是否有任何逻辑或任何建议如何管理这个...... enter image description here

5 个答案:

答案 0 :(得分:1)

只需与*.ashx核对即可检查元素是否显示

isDisplayed()

答案 1 :(得分:0)

您可以使用以下方式使用元素的存在: -

By by = By.xpath(".//*[@id='content']/input");
List<WebElement> buttons = driver.findElement(by);

while(buttons !=null && !buttons.isEmpty()) {
    WebElement yourButton = buttons.get(0); // assuming only and the first element in the list
    yourButton.click();
    driver.switchTo().alert();
    driver.switchTo().alert().accept(); // ideally this should be sufficient
    Thread.sleep(20000);
    buttons = driver.findElement(by);
}

答案 2 :(得分:0)

以下代码可以为您提供帮助。

 try {
      while(driver.findElement(By.xpath(".//*[@id='content']/input")).isDisplayed()){
       driver.findElement(By.xpath(".//*[@id='content']/input")).click();
       driver.switchTo().alert();
       driver.switchTo().alert().accept();
       Thread.sleep(20000);
     }
    }
    catch (org.openqa.selenium.NoSuchElementException e){
       System.out.println(""+location+"  Done");
    }

使用findElements的另一种解决方案,

      while(driver.findElements(By.xpath(".//*[@id='content']/input")).size()>0)
      {
        try {
            driver.findElement(By.xpath(".//*[@id='content']/input")).click();
            driver.switchTo().alert();
            driver.switchTo().alert().accept();
            Thread.sleep(20000);
        }
        catch (org.openqa.selenium.NoSuchElementException e){
            System.out.println(""+location+"  Done");
        }
 }

答案 3 :(得分:0)

实施以下逻辑:

public void test()  throws InterruptedException 

{
    WebElement button = driver.findElement(By.xpath(".//*[@id='content']/input"));
    while(checkButton(button))
    {
        button.click();
        driver.switchTo().alert().accept();
        Thread.sleep(1000);
    }


}               
    public static boolean checkButton(WebElement element)
    {
        if(element.isDisplayed())
        return true;
        else
            return false;

    }

只有当您的元素可以进一步执行操作时,它才会单击,直到您的元素变为隐形。希望这会有所帮助。

答案 4 :(得分:0)

下面我解决了我的问题..希望它会帮助下一位访客

 do
   {
   try {

   driver.findElement(By.xpath(".//*[@name='yt1']")).click();
   driver.switchTo().alert();
   driver.switchTo().alert().accept();
   Thread.sleep(20000);
   driver.switchTo().alert();
   driver.switchTo().alert().accept();
   Thread.sleep(2000);
   driver.navigate().refresh();

   }
   catch (org.openqa.selenium.NoSuchElementException e){
   System.out.println(""+location+"  Done");
    }
    }
     while ((driver.findElements(By.xpath(".//*[@class='google_data_save']")).size()>0));