javascript - Selenium WebDriver + PhantomJS + Python - 执行脚本和处理对话框

标签 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,而且我仍然需要帮助来处理该死的对话框。

谢谢你


PhantomJS 不工作。切换到 Chrome 作为 WebDriver。

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

最佳答案

好吧,您可能需要在执行脚本时或执行脚本后延迟,以便加载列表(前提是它在普通浏览器中加载)。

关于javascript - Selenium WebDriver + PhantomJS + Python - 执行脚本和处理对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41389435/

相关文章:

python - 使用 Wordnet Lemmatizer 获取词根

java - Selenium Webdriver FindElement() 方法不起作用(NoSuchElementException)

java - 无法在 Windows 32 位中使用 Web 驱动程序导航到 Safari 中的给定 URL

python - Selenium Python 绕过 "Open <...>.app?"

javascript - 数据描述符和访问器描述符有什么区别?

javascript - 返回函数 var 的函数

javascript - 如何从内部调用 iframe。

python - 用户使用 Flask 生成的 Jinja 2 模板

javascript - 如何使用 dropzone.js 收集数据 URI 内容?

python - 这段 Python 代码在做什么?