Php Selenium click()正在工作,但submit()不是';T

Php Selenium click()正在工作,但submit()不是';T,php,html,selenium,selenium-webdriver,web-testing,Php,Html,Selenium,Selenium Webdriver,Web Testing,在我的一些Selinium Webdriver测试中,我注意到我无法通过在表单的任何元素上调用submit()来提交表单,但我可以在提交按钮上调用click()。我创建了一个简单的测试网页来说明这个问题。在下面的示例中,当我调用submit()时,我看到submit按钮。但是当我调用click()时,表单实际上已提交,我看到“已提交” <html> <body> <?php if(isset($_POST["submit"])): ?> S

在我的一些Selinium Webdriver测试中,我注意到我无法通过在表单的任何元素上调用
submit()
来提交表单,但我可以在提交按钮上调用
click()
。我创建了一个简单的测试网页来说明这个问题。在下面的示例中,当我调用
submit()
时,我看到submit按钮。但是当我调用
click()
时,表单实际上已提交,我看到“已提交”

<html>
  <body>
    <?php if(isset($_POST["submit"])): ?>
    Submitted
    <?php else: ?>
      <form method="post">
        <input id="submit" name="submit" type="submit" value="submit">
      </form>
    <?php endif; ?>
  </body>
</html>

好的,我有一个类似的问题,我想分享一个迄今为止一直为我服务的解决方案。在某些网页上,我必须使用
.Submit()
,在某些网页上,我必须使用
。单击按钮元素上的()。我必须使用的页面
。单击()
,会告诉我输入的用户名或密码不正确;尽管如此,如果我省略了
.Submit()
部分并手动单击,它将以编程方式填写的凭据登录。因此,我必须根据它的id找到它的按钮元素,并对其使用
。Click()
。第二个网站的行为完全相反,在按钮上使用
.Click()
时,它什么也不做。相反,
.Submit()
起作用

所以,在我弄明白之前(我已经努力了一段时间),我已经做了以下几件事。大多数网站在“输入”按键事件中执行提交操作,所以,这正是我所做的

以下是我的代码片段:

private void Login(string url, string usernameElement, string username, 
                   string passwordElement, string password)
{
    IWebDriver driver = new FirefoxDriver();
    driver.Navigate().GoToUrl(url);
    IWebElement query = driver.FindElement(By.Id(usernameElement));
    query.SendKeys(username);
    query = driver.FindElement(By.Id(passwordElement));
    query.SendKeys(password);
    query.SendKeys(Keys.Enter);  // simulates Enter key down to submit
}

这一点零钱使我省去了很多头痛。我已经在其他几个网站上测试过了,到目前为止没有问题。我知道这不是一个完整的库问题解决方案,但它是一个解决方案。

你不能提交一个按钮,给表单元素一个ID,例如
ID=“myForm”
,然后尝试
WebElement form=driver.findElement(By.ID(“myForm”);表单提交()
@msdesdev Selenium让我们对表单中的任何元素调用
submit()
,这应该会导致表单本身提交,所以这应该可以工作。但我还是尝试了你的方法,但没有成功。很抱歉,我帮不了你,我不使用硒;)适用于python绑定您在哪个浏览器中执行此测试?当我在IE中工作时,我在执行某些在Firefox/Chrome中工作的语句时遇到了问题。
private void Login(string url, string usernameElement, string username, 
                   string passwordElement, string password)
{
    IWebDriver driver = new FirefoxDriver();
    driver.Navigate().GoToUrl(url);
    IWebElement query = driver.FindElement(By.Id(usernameElement));
    query.SendKeys(username);
    query = driver.FindElement(By.Id(passwordElement));
    query.SendKeys(password);
    query.SendKeys(Keys.Enter);  // simulates Enter key down to submit
}