selenium上的click()函数无法在C#中工作

时间:2016-02-07 20:54:17

标签: c# selenium selenium-webdriver selenium-chromedriver

我真的厌倦了这个问题而没有找到任何解决方案。

问题是我正在尝试使用C#中的测试自动化测试网站。为此,我需要登录,但登录按钮实际上不是一个按钮,它是一个属性设置为'<%= j render :partial => "client_info", :locals => {:client => 1} %>'的span标记。

我正在使用Selenium和Chrome网络驱动程序,并使用单元扩展来自动化测试。问题是每当我在测试资源管理器中运行测试时,都会执行click事件,但页面不会导航到下一页,也没有任何反应。但是,当我设置断点并通过'role=button'函数运行相同的测试时,它可以正常工作。

我必须设置断点以执行点击操作并执行登录操作。

我正在使用Visual Studio控制台应用程序。这是pic of my web site html tag

5 个答案:

答案 0 :(得分:1)

尝试通过JavascriptExecutor点击。

JavascriptExecutor是Selenium Webdriver提供的界面

WebElement element= driver.findElement(By."Your Locator"))
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

这是一个java代码,您可以使用以下链接修改它: -

Execute JavaScript using Selenium WebDriver in C#

希望它会对你有所帮助:)。

答案 1 :(得分:0)

问题很可能是在运行测试“快速”时没有加载Click函数,但是在调试时。 尝试加载页面。等一下。然后getElement并单击它。 这在将动态添加javascript函数的页面中是正常的。

答案 2 :(得分:0)

据我所知,点击是在页面完全加载之前执行的。尝试使用显式等待和expected conditins

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(logInButton)).Click();

在点击按钮之前,此按钮最长可等待10秒钟。

答案 3 :(得分:0)

我通过将元素存储在IWebElement类型变量中然后单击它来修复此问题。

IWebElement runButton = driverIE.FindElement(By.XPath("//*your XPath"));
runButton.Click();

答案 4 :(得分:0)

如果您的项目中包含Selenium.Support,则可以执行以下操作

Driver.ExecuteJavaScript("arguments[0].click();", element);

ExecuteJavaScript是库中可用的扩展方法