亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python selenium 刮板在 Windows 上運行良好

Python selenium 刮板在 Windows 上運行良好

慕村225694 2021-12-09 10:33:25
這個腳本的目的是從我的工作日程中抓取信息。當我在我的 Windows 筆記本電腦上運行它時,完整的腳本工作正常,但是當我嘗試在 raspian 上運行時,“display_but”變量上的 click.() 沒有完成它的工作。頁面拉起來很好,沒有問題,它甚至可以毫無問題地從下拉列表中選擇一個選項。只有在單擊顯示按鈕時才會出現錯誤。找到該對象就好像我打印它一樣,我得到了一個 selenium web 對象。沒有錯誤消息。當我使用 drop.click() 時,這似乎是從下拉列表中選擇了正確的選項。我搞不清楚了以下是我嘗試過的解決方法。1. 使用 Keys 模塊 tab 到按鈕然后提交。- 這會導致選擇了正確的按鈕,但是當我使用按鍵“按 Enter”時什么也沒有發生。2. 我嘗試使用 WebDriverWait、預期條件和按模塊等待元素可點擊 - 此方法也適用于我的 Windows,但不適用于 raspian 3. 我嘗試添加隱式等待和 time.sleep - 這些方法似乎沒有幫助下面是我的代碼import timefrom selenium import webdriverdriver = webdriver.Chrome(executable_path="/Users/Sanch/Desktop/Drivers/chromedriver")url = 'website'driver.get(url)#logs into accountusername_xpath = '//*[@id="usernameInputField"]'password_xpath = '//*[@id="passwordInputField"]'login_xpath = '//*[@id="submitButton"]/span/input'user_name = driver.find_element_by_xpath(username_xpath)user_name.send_keys('username')password = driver.find_element_by_xpath(password_xpath)password.send_keys('password')password.submit()#selects option from dropdowndrop_xpath ='/html/body/associate/div/view-userschedule/div/div/div[2]/div/div[1]/select/option[2]'drop = driver.find_element_by_xpath(drop_xpath)drop.click()time.sleep(3)#clicks display button Clicks display button (shows whatever selected in dropdown)display_but_xpath = '/html/body/associate/div/view-userschedule/div/div/div[2]/div/div[3]/button'display_but = driver.find_element_by_xpath(display_but_xpath)display_but.click()
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

通過使用無頭 chrome 而不是常規 chrome 運行腳本解決了這個問題。使用下面的代碼代替“driver = webdriver.Chrome(executable_path="/Users/Sanch/Desktop/Drivers/chromedriver")”使得腳本正常運行。


我不確定這是由于 raspberry pi 3+ 缺乏計算能力還是其他原因,但現在一切正常。也許其他人可以闡明為什么無頭會起作用,但普通的 chrome 不會。感謝大家的幫助!


#headless driver setup and launch

chrome_options = Options()

chrome_options.add_argument("--headless")

chrome_options.add_argument("--window-size=1920x1080")

chrome_driver = "your drivers path"

driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)


查看完整回答
反對 回復 2021-12-09
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

您應該盡可能多地從瀏覽器上下文中執行此操作。例如:


driver.execute_script("document.querySelector('[id=usernameInputField]').value = 'user'")

driver.execute_script("document.querySelector('[id=passwordInputField]').value = 'password'")

driver.execute_script("document.querySelector('css-for-button').click()")



查看完整回答
反對 回復 2021-12-09
  • 2 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號