我正在尝试创建一个简单的测试,在该测试中,您将转到URL,输入您的登录凭据,然后单击该按钮进行登录。除单击按钮外,它正在执行所有操作。我试图通过调用ClassName做到这一点。谁能看我的测试,看看我做错了什么?
public void test_search()
{
var driver2 = new ChromeDriver(@"C:\Users\MyName\Desktop\NUnitTestProject1\NUnitTestProject1\bin\Debug\netcoreapp2.1");
driver2.Navigate().GoToUrl("https://portal.crushdata.com/");
driver2.FindElement(By.Name("Email")).SendKeys("[email protected]");
driver2.FindElement(By.Name("Password")).SendKeys("Password");
driver2.FindElement(By.ClassName("btn bg-teal btn-block btn-lg waves-effect")).Click();
}
这是我按钮的类名。
使用CSS选择器,如下所示:
By.ClassName("btn.bg-teal.btn-block.btn-lg.waves-effect")
每个点代表一个类。
请参阅this页面以获取更多信息,这是该页面的示例:
。name1.name2
选择在其class属性中设置了name1和name2的所有元素
要单击SIGN IN按钮,您必须为所需的WebDriverWait引入ElementToBeClickable()
,并且可以使用以下任何Locator Strategies:
CssSelector
:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("button.btn.bg-teal.btn-block.btn-lg.waves-effect"))).Click();
XPath
:
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[text()='SIGN IN']"))).Click();
尝试使用按钮xpath。打开开发工具。右键单击要单击的按钮>选择检查>然后在开发工具窗口中右键单击html,然后从“复制”选项中复制“复制Xpath”。
然后在您的代码中将FindElement
替换为FindElementByXPath
:
driver2.FindElementByXPath("//*xpath/goes/here")).Click();
鉴于您的共享html块,以下XPath就足够了。
//div[contains(@class = "text-center")]//button[contains(@class, 'btn bg-teal btn-block btn-lg waves-effect') AND @type = 'submit']
如果驱动程序仍然无法单击,则应考虑以下事项: