首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python selenium scraper在windows上运行完美,但在raspian raspbian上运行不佳

Python selenium scraper在windows上运行完美,但在raspian raspbian上运行不佳
EN

Stack Overflow用户
提问于 2019-03-19 07:30:34
回答 2查看 72关注 0票数 0

这个脚本的目的是从我的工作日程表中获取信息。当我在我的windows笔记本电脑上运行它时,整个脚本运行得很好,但是当我尝试在raspian上运行它的时候,它在"display_but“变量上出现了点击.(),它的job.The页面弹出得很好,并且没有任何问题,它甚至从下拉菜单中选择一个选项也没有问题。只有在单击display按钮时,才会出现错误。找到这个对象就像我打印它一样,我得到了一个selenium web对象。没有错误消息。当我使用drop.click()时,这看起来像是从下拉菜单中选择了正确的选项。我迷路了

下面是我尝试过的变通方法。1.使用Keys模块跳转到按钮,然后提交。-这会导致选择正确的按钮,但当我使用键“按enter”时,什么也不会发生。2.我尝试使用WebDriverWait、expected和By modules来等待元素可点击--这个方法也适用于我的窗口,但不适用于Raspian3。我尝试添加隐式等待和time.sleep -这些方法似乎没有帮助

下面是我的代码

代码语言:javascript
复制
import time

from selenium import webdriver

driver = webdriver.Chrome(executable_path="/Users/Sanch/Desktop/Drivers/chromedriver")

url = 'website'
driver.get(url)

#logs into account
username_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 dropdown
drop_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()
EN

回答 2

Stack Overflow用户

发布于 2019-03-19 09:38:21

您可能应该在浏览器上下文中尽可能多地执行此操作。例如:

代码语言:javascript
复制
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()")
票数 0
EN

Stack Overflow用户

发布于 2019-03-19 13:11:59

通过使用无头铬而不是常规铬来运行脚本解决了这个问题。使用下面的代码代替"driver = webdriver.Chrome(executable_path="/Users/Sanch/Desktop/Drivers/chromedriver")“”,这样脚本就可以正常运行了。

我不确定是不是因为树莓派3+的计算能力不足,还是其他一些因素,但现在一切都正常工作。也许其他人可以解释为什么headless可以工作而普通的chrome不能。谢谢大家的帮助!

代码语言:javascript
复制
#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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55231579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档