如何在 Selenium Firefox C# 上模拟触摸/点击

How to simulate touch / tap on Selenium Firefox C#

我正在尝试在 Selenium WebDriver Firefox (Geckodriver) 上模拟点击屏幕。

There is a script 如果您单击(通过鼠标)或点击屏幕,则写入。我可以毫无问题地使用 Selenium "click"。我只是想"tap"而已。可能吗?我该怎么做?

我使用的是最新版本的 Geckodriver 和 Firefox。我的代码如下。

var touchActions = new OpenQA.Selenium.Interactions.TouchActions(driver);
string url = "https://jsfiddle.net/bkwb0qen/15/embedded/result/";
driver.Navigate().GoToUrl(url);
driver.SwitchTo().Frame(0);
IWebElement element = driver.FindElement(By.Id("square"));
touchActions.SingleTap(element).Build().Perform();

Selenium 不适合测试移动设备,因此如果您需要做的不仅仅是点击,我建议您寻找其他工具,例如 Selendroid。我使用 TouchActions 测试了您的代码,但无法在您提供的测试站点上触发事件。我使用自定义 JavaScript 脚本注册了事件:

string url = "https://jsfiddle.net/bkwb0qen/15/embedded/result/";
driver.Navigate().GoToUrl(url);
driver.SwitchTo().Frame(0);
IWebElement element = driver.FindElement(By.Id("square"));

StringBuilder str = new StringBuilder();
str.Append("var target = document.getElementById('square');");
str.Append("const touch = new Touch({");
str.Append("identifier: \"123\",");
str.Append("target: target,");
str.Append("});");
str.Append("const touchEvent = new TouchEvent(\"touchstart\", {");
str.Append("touches: [touch],");
str.Append("view: window,");
str.Append("cancelable: true,");
str.Append("bubbles: true,");
str.Append("});");
str.Append("target.dispatchEvent(touchEvent);");

((IJavaScriptExecutor)driver).ExecuteScript(str.ToString());

通过一些研究,我怀疑如果您需要在无数网站上 运行 它是否可靠。我已经在桌面站点和移动站点上使用 ChromeDriver 和 GeckoDriver 对此进行了测试。希望这有帮助。