使用 WebDriver 进行图表测试

Chart testing with WebDriver

无法找到正确的 xpath 或 id 以使用 WebDriver 与图表元素进行交互。请帮忙! 图表示例:http://icharts.net/chartchannel/evolution-du-smic-dans-les-pays-de-lue_m3lxyc9ac .

我以前没有测试过类似的东西。 请帮助我提供一个关于如何单击其中一个圆圈(例如 "Bulgarie" 文本旁边的橙色圆圈)的真实工作示例,并说明如何找到 WebDriver 可识别的 xpath 或标识符。 谢谢!

测试此动态页面需要处理和考虑的两件重要事情:

  • 页面上有 iframe 个元素,图表本身位于嵌套的 iframe 中。如果所需元素在 iframe 内,则必须 switch into its context.
  • 图表非常动态 - 您需要广泛使用 Explicit Waits

打印图例中所有项目的工作示例(在 Python 中):

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


driver = webdriver.Chrome()
driver.get("http://icharts.net/chartchannel/evolution-du-smic-dans-les-pays-de-lue_m3lxyc9ac")

driver.switch_to.frame(driver.find_element_by_css_selector("div.container iframe"))
driver.switch_to.frame(0)

# wait for the chart to load
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "table.legendSeriesContainer .seriesNameBox")))

# get all the legends
for legend in driver.find_elements_by_css_selector("table.legendSeriesContainer .seriesNameBox"):
    print(legend.text)

driver.close()

打印:

Bulgarie
République tchèque
Estonie
Irlande
Grèce
France
Croatie
Lettonie
Lituanie
Luxembourg
Hongrie
Malte
Pays-Bas
Pologne
Portugal
Roumanie
Slovénie
Espagne
Royaume-Uni
Slovaquie
Belgique