Java Selenium找不到输入类型submit

Java Selenium找不到输入类型submit,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我有一个表单,其中包含selenium查找并填充ok的一些输入类型“text”。但是,在表单上找不到输入类型submit,结构如下所示: <div> <div> <form> <div>other elements are here....</div> <p> <input class="btn btn-success" type="submit" name="yt0" value="Re

我有一个表单,其中包含selenium查找并填充ok的一些输入类型“text”。但是,在表单上找不到输入类型submit,结构如下所示:

<div>
<div>
<form>
      <div>other elements are here....</div>
         <p> <input class="btn btn-success" type="submit" name="yt0" value="Register Now" /></p>     
</form>
</div>
<div>   
还尝试:

driver.findelement(By.name("yt0")).submit();
我可以在页面上清楚地看到元素,selenium已经输入了提交上方元素所需的所有文本


Selenium是否可能因为submit包含在div的层次结构中而找不到它?感谢

Selenium可以找到上述元素,从您提供的信息中,我看不出它为什么不能点击它。你试过不同的定位器吗

一个例子是:

driver.findElement(By.className("btn-success")).click();
或者你可以看看其他人


还有一些其他可能发生的事情是当selenium单击按钮时该按钮被禁用,或者该按钮仅在填写表单后出现?如果是这样的话,您需要添加一个线程来启用它(或者在等待之前使用thread.sleep(500)来测试它是否工作)。

Selenium可以找到上面的元素,从您提供的信息中,我看不出它为什么不能单击它。你试过不同的定位器吗

一个例子是:

driver.findElement(By.className("btn-success")).click();
或者你可以看看其他人


还有一些其他可能发生的事情是当selenium单击按钮时该按钮被禁用,或者该按钮仅在填写表单后出现?如果是这样的话,您需要添加一个线程来启用它(或者在等待之前使用thread.sleep(500)来测试它是否工作)。

您的代码看起来不错。但是请检查提交是否隐藏如果元素隐藏,我们必须使用Javascript来单击隐藏的元素。但在此之前,请尝试使用其他定位器,而不是名称。请尝试xpath。

您的代码看起来不错。但是请检查提交是否隐藏如果元素隐藏,我们必须使用Javascript来单击隐藏的元素。但在此之前,请尝试使用其他定位器,而不是名称try xpath。

另一种可能是元素出现在DOM中,但它还不可单击。 也许您可以尝试学习并实现显式等待

这是一个很好的样品


希望这有帮助:D

另一种可能是元素出现在DOM中,但它还不能单击。 也许您可以尝试学习并实现显式等待

这是一个很好的样品


希望这有帮助:D

Selenium通常比页面加载速度更快,例如,您单击了一个链接,它会占用您另一个页面。并不总是存在隐式等待,也许您需要等待元素变得可见

这可以通过,请参阅下面的代码

import import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

WebDriverWait wait = new WebDriverWait(driver, seconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
        .className(className)));
另一个选项是使用,如果
输入
被隐藏,这有助于使用Javascript更改属性

请记住,有时您需要等待一个元素,最好有一个带有静态方法的helper类,这样您就可以轻松地调用这些方法,而无需重写代码,下面是一个示例方法

public static void waitForVisibilityByClass(WebDriver driver,
            String className, int seconds) {
        WebDriverWait wait = new WebDriverWait(driver, seconds);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By
                .className(className)));
    }

如果没有帮助,请告诉我。

Selenium通常比页面加载速度快,例如,您单击了一个链接,它会带您进入另一个页面。并不总是存在隐式等待,也许您需要等待元素变得可见

这可以通过,请参阅下面的代码

import import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

WebDriverWait wait = new WebDriverWait(driver, seconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
        .className(className)));
另一个选项是使用,如果
输入
被隐藏,这有助于使用Javascript更改属性

请记住,有时您需要等待一个元素,最好有一个带有静态方法的helper类,这样您就可以轻松地调用这些方法,而无需重写代码,下面是一个示例方法

public static void waitForVisibilityByClass(WebDriver driver,
            String className, int seconds) {
        WebDriverWait wait = new WebDriverWait(driver, seconds);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By
                .className(className)));
    }

如果没有帮助,请告诉我。

表格是必须提交的表格

使用


希望有帮助。

表格是必须提交的表格

使用


希望有帮助。

我尝试过使用click()并成功。让它等待元素出现在页面上,有时selenium尝试过使用click()并成功。让它等待元素出现在页面上,有时selenium尝试过快速在答案中添加不必要的链接。不要在答案中添加不必要的链接。