Selenium WebDriver + PhantomJS + Python - 执行脚本和句柄对话框

时间:2016-12-30 01:24:06

标签: javascript python selenium selenium-webdriver phantomjs

我对编码很新,所以请原谅我这是一个愚蠢的问题:

我正在尝试从执行JavaScript填充的列表中获取数据,这是相关的HTML部分:

<a data-popover-ui="524151" data-popover-type="Search" href="javascript:LoadLists('SaveListSearchDetails.aspx?AutoLoad=1&amp;SavedListID=EID77FF7H&amp;SavedListTypeID=Search')" data-original-title="" title=""><span class="grid-result no-break">AVEV HRC FEC Master File</span></a>

点击此超链接后,会出现一个要求确认的对话框

这是我试过的:

browser = selenium.webdriver.PhantomJS(executable_path=r"E:\phantomjs-2.1.1-windows\bin\phantomjs.exe")

browser.get('~~link where the javascript is~~')

first_list = browser.execute_script("LoadLists('SaveListSearchDetails.aspx?AutoLoad=1&amp;SavedListID=EID77FF7H&amp;SavedListTypeID=Search')"

browser.get('~~link where the list is~~')

browser.get_screenshot_as_file

browser.save_screenshot('1.jpg')

屏幕截图是为了让我看看它是否能够快速运行。该列表未更新。我几乎没有关于java编码的线索,所以我根本不确定发生了什么,但我认为这是因为当JavaScript被执行时,我不会处理出现的对话框。

我想我可以使用get_element_by_SOMETHING,但我不确定要使用哪个,因为HTML部分中没有ID,我仍然需要帮助来处理该死的对话框。

谢谢yoooo

PhantomJS无法正常工作。作为WebDriver切换到Chrome。

t_list = find_element_by_link_text("~~text~~")
t_list.click()
time.sleep(5)
Alert(browser).accept()

1 个答案:

答案 0 :(得分:0)

你可能需要在执行脚本中或之后延迟,以便列表加载(假设它在普通浏览器中加载)。