【问题标题】:Highcharts: Trigger showing tooltip programatically with seleniumHighcharts:使用 selenium 以编程方式显示工具提示的触发器
【发布时间】:2022-01-04 12:50:48
【问题描述】:

我需要在第三方网站上使用 selenium 创建一些自动操作(我认为这意味着我不能使用 highcharts api)。

加载第三方网站时,html正文中没有tooltip元素。好像是光标悬停在图表上时动态添加的。

我希望通过 java selenium 显示工具提示。如果有 javascript 方法可以做到这一点,请告诉我,我会尝试自己将其转移到 selenium 代码

到目前为止,我已经尝试使用 javascript 通过浏览器控制台触发“鼠标悬停”事件或向 highcharts 容器内的不同元素添加“悬停”类,但我没有运气,工具提示未添加到 html正文,因此我无法选择它。

我相信在用户将鼠标悬停在图表上之前,不会将 highcharts-tooltip 类的元素添加到 html 正文中来重现上述问题。

【问题讨论】:

  • 你试过visibilityOfElementpresenceOfElement吗?
  • 我的问题是工具提示元素不可见。事实上,它甚至没有添加到 DOM 中。我的问题是我找不到触发条件以便将工具提示添加到 DOM 的方法。
  • @pburgr 谢谢,但我的问题是我无法以编程方式触发悬停事件,因此工具提示元素首先添加到 DOM 中。这可能与 highcharts 框架以及显示工具提示所需的条件有关

标签: javascript selenium highcharts


【解决方案1】:

您应该能够获取全局Highcharts 变量并在特定点调用onMouseOver 方法。

Highcharts.charts[0].series[0].points[0].onMouseOver();

您也可以直接在 svg 元素上调度 mousemove 事件。

document.getElementsByClassName('highcharts-point')[0].dispatchEvent(new Event('mousemove', { 'bubbles': true }));

API 参考: https://api.highcharts.com/class-reference/Highcharts.Point#onMouseOver

【讨论】:

  • 我无法访问全局 Highcharts 变量。但是,在这一点上使用 mouseover 事件就可以了,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 2010-09-08
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
相关资源
最近更新 更多