我真的厌倦了这个问题而没有找到任何解决方案。
问题是我正在尝试使用C#中的测试自动化测试网站。为此,我需要登录,但登录按钮实际上不是一个按钮,它是一个属性设置为'<%= j render :partial => "client_info", :locals => {:client => 1} %>'
的span标记。
我正在使用Selenium和Chrome网络驱动程序,并使用单元扩展来自动化测试。问题是每当我在测试资源管理器中运行测试时,都会执行click事件,但页面不会导航到下一页,也没有任何反应。但是,当我设置断点并通过'role=button'
函数运行相同的测试时,它可以正常工作。
我必须设置断点以执行点击操作并执行登录操作。
我正在使用Visual Studio控制台应用程序。这是pic of my web site html tag。
答案 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
是库中可用的扩展方法