1、python--selenium-web自动化canvas绘图 https://www.itdaan.com/blog/2019/01/04/dcf139461997f281dc3149ff70cfe278.html
# canvas绘图 def painting_canvas(driver): driver.execute_script('var s=document.getElementsByClassName("signature-pad--body")[0];'#signature-pad--bod为绘图页的元素ClassName + 'var c=s.getElementsByTagName("canvas")[0];' + 'var ctx=c.getContext("2d");'#2维 + 'ctx.font="100px Arial";'#像素大小 + 'ctx.fillText("Lucky me",100,200);')#为输入内容和坐标
2、https://www.cnblogs.com/sprouts/p/10343142.html
selenium鼠标操作
背景: 页面中的表格都是用canvas画出来的,导致无法定位到canvas里面的内容,但是点击的内容可以从双击后的详细页面获取.
解决方案
通过canvas标签元素的坐标位置的相对位置来点击canvas中的任何一条记录后进入到详情页面再获取详情页中的元素信息.
actions = ActionChains(self.webdriver) actions.move_to_element_with_offset(el, 102, 35).context_click().perform() #el是canvas标签元素,102和35是相对于canvas的相对便宜量.
注意:
move_to_element_with_offset()方法和 move_by_offset()方法的区别 前者是移动鼠标到某个元素的相对便宜量位置,后者是移动鼠标到鼠标当前位置的便宜量位置.
3、[Selenium] 操作 HTML5 中的 Canvas 绘制图形 https://blog.csdn.net/weixin_33881140/article/details/93677365
以 Chrome Driver 为例阐述,通过 Actions 在 Canvas 上绘制一个封闭图形。对于 Canvas 上的操作,推荐 Chrome Driver 或 Firefox Driver
示例:
package com.learningselenium.html5;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
public class testHTML5Canvas{
WebDriver driver;
@Before
public void setUp() throws Exception{
System.setProperty("webdriver.chrome.driver", "/Selenium 2/selenium/chromedriver");
driver = new ChromeDriver();
driver.get("http://literallycanvas.com/");
}
@Test
public void testHTML5Canvas() throws Exception{
//元素不存在,有问题 “div.literally.index div.lc-drawing canvas”
WebElement canvas = driver.findElement(By.xpath("//*[@id = \"about\"]/div[1]/canvas"));
Actions drawing = new Action(driver);
//绘制图形
driver.clickAndHold(canvas).moveByOffset(10,50).moveByOffset(50,10).moveByOffset(-10,-50).moveByOffset(-50,-10).release().perform();
}
@After
public void tearDown() throws Exception{
driver.quit();
}
}
转载于:https://www.cnblogs.com/feifeidxl/p/4554651.html