3
我是相當新的編碼,所以請原諒我,如果這是一個愚蠢的問題:硒的webdriver + PhantomJS + Python的 - 執行腳本和處理對話框
我想從一個列表獲取數據通過執行一個JavaScript稀少,這裏的相關HTML部分:
<a data-popover-ui="524151" data-popover-type="Search" href="javascript:LoadLists('SaveListSearchDetails.aspx?AutoLoad=1&SavedListID=EID77FF7H&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&SavedListID=EID77FF7H&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()
一個簡單的time.sleep()沒有工作,甚至等待5分鐘(比在瀏覽器中加載更多的方式)。另外,如果正確理解你的評論,當我在運行代碼後在瀏覽器中訪問它時,列表不會改變。 – AMC
不確定關於java,但python有find_element_by_id,find_element_by_name,find_element_by_xpath等肯定java必須有類似的。你可以使用web inspector/firebug來查找id或xpath。 – Raaj
我正在使用Python,並且我知道有find_element_by_,但我不知道在這種情況下使用哪一個。我不完全確定什麼是xpath和css選擇器,這可能是使用 – AMC