使用 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
无法找到正确的 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