【问题标题】:How to simulate touch / tap on Selenium Firefox C#如何在 Selenium Firefox C# 上模拟触摸/点击
【发布时间】:2019-12-09 17:42:23
【问题描述】:

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

There is a script 会在您单击(通过鼠标)或点击屏幕时写入。我可以通过 Selenium 毫无问题地“点击”它。我只想“点击”它。可能吗?我该怎么做?

我正在使用最新版本的 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();

【问题讨论】:

    标签: c# selenium selenium-webdriver touch geckodriver


    【解决方案1】:

    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 进行了测试。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      相关资源
      最近更新 更多