gpt4 book ai didi

java - 无法使用 Selenium WebDriver 找到 Canvas 上的元素

转载 作者:行者123 更新时间:2023-12-02 02:14:09 25 4
gpt4 key购买 nike

我有一个使用 Vaadin 框架开发的应用程序,现在我需要单击 Canvas 上的矩形多边形。以下是 html 代码我在这里提供 Html 代码

<canvas width="1920" height="524" class="ol-unselectable" style="width: 100%; height: 100%;"></canvas>

我尝试使用操作,使鼠标移动到多边形上并单击。

int x = (int) 5638326.333511386;
int y = (int) 2580101.9711508946;
driver.get("http://localhost:8080/internship");

WebElement ele = driver.findElement(By.xpath("//canvas[@class='ol-unselectable']"));
// driver.findElement(By.tagName("canvas"));
//driver.findElemet(By.className("ol-unselectable"));
try {
Actions builder = new Actions(driver);
builder.moveToElement(ele, x, y);
builder.clickAndHold();
builder.release();
builder.perform();
} catch (Exception e) {
// do nothing
}

我收到以下错误

org.openqa.selenium.NoSuchElementException: Unable to locate element: //canvas[@class='ol-unselectable'].

任何人都可以建议一些示例如何在 Canvas 上查找具有坐标的多边形并单击它。

最佳答案

通常,canvas 元素嵌入在 iframe 中。因此,首先,您必须找到 iframe 元素,然后找到 iframe 内的 Canvas 。例如:

WebDriver driver = new FirefoxDriver(firefoxOptions);
try {
driver.get("https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_canvas_empty");
WebElement iframe = driver.findElement(By.name("iframeResult"));
driver.switchTo().frame(iframe);
WebElement canvas = driver.findElement(By.id("myCanvas"));
System.out.println(canvas.getText());
} finally {
driver.quit();
}

我认为这段代码可能对您有帮助。

编辑:在与 @RamanaMutana 聊天以及他对发布的问题进行的更改之后,我可以更好地理解他的需求。

我们意识到,仅使用 By.tagName 选择器就足以找到 Canvas 元素,如下面的代码所示:

driver.findElements(By.tagName("canvas")).get(0);

关于java - 无法使用 Selenium WebDriver 找到 Canvas 上的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49538519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com