html selenium 元素截图如何捕捉?

lf3rwulv  于 2022-12-09  发布在  其他
关注(0)|答案(2)|浏览(150)

我正在尝试访问屏幕截图中的“canvas”元素。
下面的代码是什么意思?

driver.find_element_by_tag_name('canvas').screenshot("canvas.png")
driver.find_element_by_tag_name('canvas').screenshot_as_png("chess.png")

以上两个都不起作用,我错过了什么?

rm5edbpk

rm5edbpk1#

您已经很接近了。<canvas> 标记在 <chess-board> 标记内。

溶液

理想情况下,您需要为<canvas>元素的visibility_of_element_located()导出WebDriverWait,并且可以使用以下locator strategies之一:

  • 使用 * 标签_名称 *:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.TAG_NAME, "canvas"))).screenshot_as_png("chess.png")
  • 使用 *CSS选择器 *:
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "chess-board > canvas"))).screenshot_as_png("chess.png")
  • 使用 XPATH
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//chess-board/canvas"))).screenshot_as_png("chess.png")

*注意:必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
wtzytmuj

wtzytmuj2#

1)创建一个类。实现TestNG“ITestListener”。2)调用方法“onTestFailure”。3)添加代码以使用此方法拍摄屏幕快照。4)获取Test方法名称并使用测试名称拍摄屏幕快照。然后将其放在所需的目标文件夹中。

相关问题