【发布时间】:2021-09-08 06:32:45
【问题描述】:
浮动窗口的内容不包含在网页代码中。它仅在鼠标悬停时出现。那么在这种情况下如何获得价值呢?我觉得这很棘手,因为我没有锚点来控制鼠标的移动。
代码如下,
def button_click(driver, button_num):
driver.execute_script("arguments[0].click();", button_num)
def catogory_obtain_tokyo(driver):
time_waiting_max = 20
try:
page_kansai = WebDriverWait(driver, time_waiting_max).until(
EC.presence_of_element_located((By.ID, 'snippet-13'))
)
buttons = WebDriverWait(page_kansai, time_waiting_max).until(
EC.presence_of_all_elements_located((By.CLASS_NAME, "mv-button-base.mv-hyperlink-button"))
)
return buttons
except:
print('catogory_obtain error')
driver.quit()
return ''
path = r'chromedriver.exe'
tokyo_url = r'https://www.eex.com/en/market-data/power/futures#%7B%22snippetpicker%22%3A%22EEX%20Japanese%20Power%20Futures%20-%20Tokyo%22%7D'
# --- time line ---
timeline = '//*[@id="null"]/div/div[2]/div'
# ------- price trade reg ----
pane_pr = '//*[@id="null"]/div/div[1]/div[1]/div[2]'
# --------volume trade registration ------
pane_vtr = '//*[@id="null"]/div/div[1]/div[3]/div[2]'
driver = webdriver.Chrome(path)
driver.get(tokyo_url)
btns = catogory_obtain_tokyo(driver)
button_click(driver, btns[0])
time.sleep(3)
# sep-03 btn
date = '//*[@id="symbolheader_jft"]/div/div[1]/div[2]/table/tbody/tr[1]/td[5]'
date_btn = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, date))
)
time.sleep(5)
date_btn.click()
# hit icon
icon_path = '//*[@id="baseloadwidget_jft"]/table/tbody/tr[2]/td[5]'
icon = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, icon_path))
)
time.sleep(5)
icon.click()
time.sleep(5)
# --------- click volume btn ------
vtr_path = '//*[@id="baseloadwidget_jft"]/table/tbody/tr[3]/td/div/div[2]/div[3]/div[2]'
vtr_btn = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, vtr_path))
)
time.sleep(5)
vtr_btn.click()
time.sleep(5)
tl = driver.find_element(By.XPATH, timeline)
webdriver.ActionChains(driver).move_to_element(tl).perform()
time.sleep(5)
pr = driver.find_element(By.XPATH, pane_pr)
webdriver.ActionChains(driver).move_to_element(pr).perform()
time.sleep(5)
vtr = driver.find_element(By.XPATH, pane_vtr)
webdriver.ActionChains(driver).move_to_element(vtr).perform()
time.sleep(5)
time.sleep(5)
driver.quit()
基本上,我尝试了move_to_element 方法,但它只会将鼠标移动到元素的中心。但是,这里这个内联图表被认为是一个元素,如何控制鼠标在一个 Web 元素内的移动?
【问题讨论】:
-
您是指鼠标悬停执行的操作吗?
-
@fam 是的,像这样。但是我怎样才能得到我的鼠标和数据表之间的相对位置呢?实际上,我希望鼠标在元素内移动。
-
请提供当前的代码示例和您尝试方法的网站。
-
这是website。请在名为
week 36/21的week类别中查看2021-09-03 的数据,单击行尾的图标,您可以看到折线图。这是我要从中抓取数据的表。 -
@Leo_Liu - 预期输出是什么?
标签: python-3.x selenium