Python selenium在悬停时获取数据

时间:2015-07-14 05:08:03

标签: javascript python selenium selenium-webdriver

driver.get(link)
time.sleep(2)
lol = driver.find_element_by_xpath("//*[@id='table_div']/div/div[1]/table/tbody/tr[2]/td[10]/div/div")
hover = ActionChains(driver).move_to_element(lol)
hover.perform()

这是我到目前为止的代码。我试图得到一些只在我将鼠标悬停在某个元素上时显示的文字。我找到了含有硒的元素,并将其悬停在它上面,但我无法弄清楚如何实际获取数据。当我检查元素时,看起来数据不存在,我只能在查看页面源时在javascript中看到它。它只是一个变量,所以如何从javascript中获取该变量值?

的javascript:

   function apply_pop(){
   jq(".pop_up").mouseenter(function(p_event){
   p_value = jq(this).attr("value")
   //creating dynamic lists from python static storage
   var data_list = ['0', '2015-07-13 17:29:15'];

   var desp_list = [['RUNNING 1000.0 None', 'INVALID None None', 'INVALID None None', 'PASSED 0.05 2015-07-10 17:21:54', 'FAILED 0.05 2015-07-08 12:35:55', 'FAILED 0.05 2015-07-08 09:54:48', 'FAILED 0.05 2015-07-07 18:21:17', 'FAILED 0.05 2015-07-07 17:07:50', 'FAILED 0.05 2015-05-28 18:33:41'], ['FAILED 0.05 2015-07-13 16:33:38', 'FAILED 0.05 2015-07-10 15:36:30', 'FAILED 0.05 2015-07-09 19:39:46', 'FAILED 0.05 2015-07-09 11:00:45', 'FAILED 0.05 2015-07-09 01:05:13', 'INVALID None None', 'INVALID None None', 'FAILED 0.05 2015-06-19 22:42:21']]
   ...};

我想要desp_list中的第一件事(RUNNING 1000.0无)

1 个答案:

答案 0 :(得分:0)

我们可以争论这种方法的可靠性,但如果您只是获取页面源并通过正则表达式提取所需数据,该怎么办?通常,使用正则表达式解析HTML是not a good idea,但在这里我们不关心页面的结构,只需要javascript数组的一部分。示例代码(未测试):

import re

# ...

page_source = driver.page_source

pattern = re.compile(r"var desp_list = \[\['(.*?)',")
match = pattern.search(page_source, re.MULTILINE | re.DOTALL)
print match.group(1) if match else "No match"