【发布时间】:2017-10-24 19:31:29
【问题描述】:
我正在尝试使用 Selenium 获取有关 Google Scholar 的研究论文的 BibTeX 条目。例如,当一个人转到this 页面时,最上面的论文下面有可点击的引号图像。单击图像时,会弹出引文窗口。我想使用 Selenium 获取该引用窗口的页面源。但是,我无法进入弹出窗口。
上述页面的相关(至少看起来是这样)HTML元素如下所示:
<a href="javascript:void(0)" class="gs_or_cit gs_nph" title="Cite" role="button" aria-controls="gs_cit" aria-haspopup="true"><svg viewBox="0 0 17 16" class="gs_or_svg"><path d="M1.5 3.5v5h2v.375L1.75 12.5h3L6.5 8.875V3.5zM9.5 3.5v5h2v.375L9.75 12.5h3L14.5 8.875V3.5z"/></svg></a>
这是我正在尝试的:
#!/usr/bin/python
from selenium import webdriver
import time
driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'])
link = u'https://scholar.google.co.il/scholar?hl=en&as_sdt=0%2C5&q=Enhanced+Partial+Expansion+%7BA%7D&btnG=&oq=enhanced+'
driver.set_window_size(1124, 850) # Avoid the error of the element not being displayed, see https://github.com/ariya/phantomjs/issues/11637
driver.get(link)
element = driver.find_element_by_class_name('gs_or_cit') # 'gs_or_cit gs_nph' contains space and is not accepted. However, 'gs_or_cit' seems to work.
element.click()
time.sleep(5) # Enough time for sure for the citation window to appear
print len(driver.window_handles)
这段代码打印出1。即只有一个窗口句柄,引用窗口的句柄不可用。为什么会这样?我如何才能访问该窗口及其页面源?
【问题讨论】:
-
点击显示一个DOM容器,而不是新窗口。
-
@FlorentB。这是好消息还是坏消息?也就是说,有没有办法获得那个东西的页面源?
-
等待容器
#gs_cit出现,读取属性innerHTML -
当我通过简单的睡眠等待时它可以工作。如果我尝试实际等待 id 为
'gs_cit'的元素出现,则等待立即退出并且 innerHTML 属性为javascript:void(0)。我也尝试过隐式等待,结果相同...
标签: javascript python selenium popup window