我正在使用C#和硒 我正在尝试在页面上找到一个元素,其代码如下:
<form class="login box" id="signin-form" action="/signin" method="POST">
<div class="form-group">
<label for="login-email" class="sr-only">Email</label>
<input id="login-email" class="form-control" type="email" name="login_email" placeholder="Email">
</div>
<div class="form-group">
<label for="login-password" class="sr-only">Password</label>
<input id="login-password" class="form-control" type="password" name="login_password" placeholder="Password">
</div>
<div class="login-password-meta">
<label class="login-remember">
<input class="checkbox" name="login_remember" type="checkbox">
<i class="checkbox-icon icon icon-check"></i>
Stay signed in
</label>
<a class="login-forgot" href="https://codeanywhere.com/forgotpassword">Forgot password?</a>
</div>
<button class="login-btn btn btn-md btn-secondary-outline" type="submit">Login</button>
<p>Or sign in instantly</p>
<ul class="login-social">
<li class="login-social-google-plus">
<a href="/google/authorize?state=login"><span class="sr-only">Google+</span></a>
</li>
<li class="login-social-bitbucket">
<a href="/bitbucket/authorize?state=login"><span class="sr-only">Bitbucket</span></a>
</li>
<li class="login-social-github">
<a href="/github/authorize?state=login"><span class="sr-only">GitHub</span></a>
</li>
<li class="login-social-facebook">
<a href="/facebook/authorize?state=login"><span class="sr-only">Facebook</span></a>
</li>
</ul>
</form>
我想提交表格,但是找不到clickable元素。 我尝试过
FindElement(By.TagName("form")).Submit();
但是在代码运行后什么也没发生!只是刷新页面
还有
FindElement(By.ClassName("login-btn).click();
它说它不可点击
答案 0 :(得分:1)
谢谢大家,所有答案都对您有所帮助。但是我自己解决了这个问题。 该元素不可点击,因为它被隐藏在另一个元素下,并通过此代码使Web浏览器全屏显示。
WebDriver.Manage().Window.FullScreen();
答案 1 :(得分:0)
尝试使用javascript单击:
public static void jsPress(WebDriver driver, WebElement element) {
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
}
答案 2 :(得分:0)
您可以尝试以下方法:
FindElement(By.Xpath("//*[@id='signin-form']/button[@type = 'submit']").click();
我还要添加WebDriverWait
等到元素可单击。我不知道您使用的是哪种语言,但是您可以在Google中找到WebDriverWait
的示例语言。对于C#
,它是这样的:
var wait = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
var button = wait.Until(ExpectedConditions.ElementIsClickable(By.Xpath("//*[@id='signin-form']/button[@type = 'submit']")));
button.click();
答案 3 :(得分:0)
一种方法是在填写表单后发送输入键:
using OpenQA.Selenium.Interactions;
Actions builder = new Actions(driver);
builder.SendKeys(Keys.Enter);
否则,您可以尝试使用 XPATH :
//button[text()='Login']
使用WebDriverWait进行编码:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//button[text()='Login']"))).Click();
不同的方法:
使用Action类并将焦点移到特定元素。
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
Actions actions = new Actions(driver);
actions.MoveToElement(element);
actions.Click().Perform();
在这种情况下,这将是元素:wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpath("//button[text()='Login']")))