Selenium:如何获取画布标签内元素的定位器

问题描述 投票:0回答:4

我有一个实现 Canvas 标签的 Web 应用程序。在一个画布部分内有多个按钮和其他元素。我想使用 Selenium WebDriver 单击该画布标签内的按钮,但无法使用检查元素、selenium IDE 或 Firepath 等找到定位器(id、xpath 等)。即使我也无法在画布标签内看到任何其他标签。

有什么方法可以获取canvas标签内元素的定位器,或者有什么方法可以使用Selenium WebDriver与这些元素进行交互?

画布标签:

<canvas style="padding: 0px; 
               margin: 0px; border: 0px none; 
               background: none repeat scroll 0% 0% transparent; 
               position: absolute; 
               top: 0px; left: 0px; 
               width: 360px; 
               height: 360px;" 
               width="360" height="360"/>
selenium selenium-webdriver html5-canvas selenium-ide
4个回答
1
投票

您是否尝试在 xpath 中使用父标签?由于在一个画布部分内有多个按钮,您可以尝试

/parent::*[canvas attributehere]/parent::*[another-canvas attribute here]
.. 等等,直到获得特定元素


0
投票

一种解决方案是使用 x 和 y 坐标。

driver.switchTo().window(frame);
WebElement canvas= driver.findElement(By.id("canvas"));
Actions action2 = new Actions(driver);
action2.moveToElement(canvas, canvas.getLocation().getX()+ELEMENTS_DISTANCE_FROM_CANVAS_X, canvas.getLocation().getY()+ELEMENTS_DISTANCE_FROM_CANVAS_Y).click().build().perform();

0
投票

也许这个 Java 教程对某人有帮助,这是基本代码来自它

var canvas_dimensions = canvas.getSize();
int canvas_center_x = canvas_dimensions.getWidth() / 2;
int canvas_center_y = canvas_dimensions.getHeight() / 2;
int button_x = (canvas_center_x / 3) * 2;
int button_y = (canvas_center_y / 3) * 2;

// Click button on the canvas
new Actions(driver)
  .moveToElement(canvas, button_x, button_y)
  .click()
  .perform();

0
投票

请帮我获取红色和绿色按钮的 x,y 坐标,如下图所示。 locator og green or red button

as 按钮位于 canvas 标签中 canvas Tag

© www.soinside.com 2019 - 2024. All rights reserved.