Selenium IDE如何模拟鼠标点击网站空白区域?

Posted

技术标签:

【中文标题】Selenium IDE如何模拟鼠标点击网站空白区域?【英文标题】:How to simulate mouse click on blank area in website by Selenium IDE? 【发布时间】:2015-03-14 00:03:36 【问题描述】:

我想在表单外的空白区域上执行鼠标单击,以便通过 Selenium IDE 唤醒某些网站中的数据流量。 有什么想法吗?

我尝试按 x,y 进行点击,但它对我的测试用例无效。 场景如下:

    填写电子邮件字段 在表单外单击,使客户端向服务器发送数据请求以检查数据库中是否已存在此电子邮件,然后它会自动完成并启用继续按钮。

【问题讨论】:

【参考方案1】:

你可以使用命令:

driver.findElement(By.xpath("//html")).click();

但有时它不需要空格,

在这种情况下,请使用:

driver.get("//html");

【讨论】:

这不起作用,至少在 chrome 中是这样。线程“主”org.openqa.selenium.WebDriverException 中的异常:未知错误:无法在“窗口”上执行“getComputedStyle”:参数 1 不是“元素”类型。 不起作用Failure reason: unknown error: unhandled inspector error: "code":-32603,"message":"Cannot navigate to invalid URL"【参考方案2】:

'html'是一个特殊的元素,你想要的是'body'(第一个'可见'的DOM元素)

所以请使用以下内容(用 Chrome 确认可以正常工作):

python 示例 driver.find_element_by_xpath("//body").click()

【讨论】:

【参考方案3】:

最好的解决方案是通过执行以下语句来使用键盘TAB 键。

element.sendKeys(Keys.TAB);

它将聚焦下一个元素 - 从而在场外 - 你会得到你想要的结果。

【讨论】:

【参考方案4】:

只需单击页面上您确定存在的另一个元素。

Browser.Driver.FindElement(By.Id("testtest123")).Click();

另一种解决方案可能是调用 javascript 从该电子邮件字段中移除焦点,这取决于您为 ajax 设置的触发器来触发。

【讨论】:

感谢 Alex,但我不使用 selenium web 驱动程序,仅使用 IDE 2.8.0。你有别的想法吗? selenium IDE 命令或外部 javascript 可以使用的东西? ajax 的触发器是什么?如果在您的文本字段失去焦点时调用它,只需运行 javascript 并将焦点放在另一个元素上。 var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-20992974-4']); _gaq.push(['_set', 'title', '客户门户']); _gaq.push(['_trackPageview']); (function() var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore( ga, s); )();【参考方案5】:

填写电子邮件后,点击空白区域,使用此命令。

driver.findElement(By.xpath("//html")).click();

它会点击空白区域。

【讨论】:

这不起作用,至少在 chrome 中是这样。线程“主”org.openqa.selenium.WebDriverException 中的异常:未知错误:无法在“窗口”上执行“getComputedStyle”:参数 1 不是“元素”类型。【参考方案6】:

我希望它仍然可以帮助人们,所以我有答案 =) 如果下拉菜单、字段或任何其他按钮不活动,Selenium 总是在简单的点击时抛出异常。我的出路是使用带有暂停的动作。以下是我的示例中的一些代码行:

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath("your path")))
       .click().pause('your amount of milliseconds').click().build().perform();

将它封装到某个函数中,然后你就有了一个新的点击器。

【讨论】:

【参考方案7】:

我需要点击反应代码中的空白区域。

下面的代码解决了我的问题。

 driver.FindElement(By.XPath("//body")).Click();

【讨论】:

【参考方案8】:

您可以使用操作点击到元素外部

 public void clickOutside() 
            Actions action = new Actions(driver);
            action.moveByOffset(0, 0).click().build().perform();
        

【讨论】:

【参考方案9】:
public void clickOutside() 
            Actions action = new Actions(driver);
            action.moveByOffset(0, 0).click().build().perform();
        

这是这个问题的完美解决方案。

【讨论】:

【参考方案10】:

它们都不适合我。我解决了如下问题;

   WebElement el = driver.findElement(By.xpath("//html"));
   el.sendKeys(Keys.TAB);

【讨论】:

以上是关于Selenium IDE如何模拟鼠标点击网站空白区域?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 在 Selenium 中模拟鼠标移动

Selenium IDE脚本编辑与操作

selenium如何模拟真实键盘操作?

如何用selenium模拟鼠标操作

Python使用Selenium模拟浏览器输入和鼠标点击

怎么写出一个网页的点击操作