我刚刚将我的Chrome驱动程序更新为最新版本-73.0.3683.68,并且自从我的“点击”功能无法正常运行(它确实有时可运行,但并非每次都可运行)。
Chrome版本:73.0.3683.75版(官方内部版本)(64位)
我用C#编写代码。
最大的问题是Selenium就像“点击”正常工作并前进到下一个功能一样,并在那里失败,因为该元素还没有出现在屏幕上。
请注意,在单击元素之前,我们确实验证了该元素是可单击的。
有没有办法确保“点击”功能确实发生?
“点击并验证”之类的功能吗?
谢谢。
答案 0 :(得分:1)
嘿,我能够通过更新到ChromeDriver 74.0.3729.6解决我的问题。您还需要使用Chrome的Beta版。在您的代码中,您将需要设置一个二进制路径以指向Chrome Beta,因为它使用的路径与当前版本不同。 Chrome在他们的文档中报告说,它有时会将点击发送到错误的版本73.0.3683.68的元素。
这里是更多信息的站点:http://chromedriver.chromium.org/downloads查看发行说明,您将在此处找到相关信息。
我希望这可以解决您的问题。
答案 1 :(得分:0)
我不确定点击的作用,但是可以说它带您进入了新页面。您可以添加一种方法来查看您刚刚单击的按钮是否仍然可见,如果是,请再次单击它。话虽这么说,当您调试它并进入它时,它起作用了吗?也许先尝试MoveToElement?您还可以添加一个Java单击来代替,老实说,它通常更可靠。我们添加了一个try catch并执行了c#单击,如果c#单击失败,则执行了js单击。两全其美。
public static void Click(IWebElement element)
{
var actions = new Actions(driver);
actions.MoveToElement((element));
actions.Click(element).Perform();
}
public static void JClick(IWebElement element)
{
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", element);
}
public static void LastChanceClick(IWebElement element)
{
try
{
Click(element);
}
catch (Exception)
{
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", element);
}
}