Selenium Web驱动程序引发超时异常

nwo49xxi  于 2023-01-26  发布在  其他
关注(0)|答案(3)|浏览(169)

我是Selenium的新手。
我的问题是,我试图单击一个元素,但Selenium抛出了一个timeout exception,即使我增加了超时值。
我是否需要使用xpath而不是id
HTML代码为:


我的代码如下所示

void searchquotation() throws TimeoutException {
    try {
          WebDriverWait wait = new WebDriverWait(driver, 15);
          WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("SearchButton")));
          element.click();
       }
    catch(TimeoutException e) {
         System.out.println("Timeout occured");
       }

我做错什么了吗?

qnakjoqk

qnakjoqk1#

这里的输入类型是submit(通过查看HTML代码),所以我强烈建议尝试Selenium的submit()函数。

fdbelqdn

fdbelqdn2#

您应该使用By.id而不是By.name。因此,请使用以下任一项:

  1. By.Id("SearchButton")
  2. By.CssSelector("input#SearchButton")
  3. By.Xpath("//input[@id='SearchButton']")
    注意:语法可能有误,请根据您的编程语言进行调整
xesrikrc

xesrikrc3#

try below code, even timeout exception occurs, it will try 4 time to click on it. assuming locator is correct By.name("SearchButton")

    public void searchquotation()
    int count=0;
    while(count<4)
    {
     try { 
    WebElement x = driver.findElement(By.name("SearchButton")));
    WebDriverWait element=new WebDriverWait(driver,15);
    element.until (ExpectedConditions.presenceOfElementLocated(By.name("SearchButton"))); 
    x.click(); 
count=count+4;
    } 
    catch(TimeoutException e) { 
    count=count+1;
    System.out.println("Timeout occured");
    continue;
    }
    }

相关问题