尝试使用Selenium将文件上传到Web浏览器

时间:2018-09-07 14:28:45

标签: python python-3.x

我正在尝试自动将CSV文件上传到网络浏览器。如果单击该按钮,则将打开一个Windows对话框,选择文件,然后按预期方式将其上传。我正在尝试自动化这个小任务。 HTML看起来像这样: 我试图开始工作的代码如下所示: 汇入要求 进口硒 从硒导入webdriver 从bs4导入BeautifulSoup 从webbot导入浏览器 driver = webdriver.Chrome(executable_path = r'C:/ Users / ryans / OneDrive / Desktop / Briefcase / Python Scripts / chromedriver.exe') web =浏览器() url ='https:// web_site' web.go_to(URL) #第一次验证 web.type('email',into ='username') web.click('继续') #2次验证 web.type('email',into ='username') web.click('下一步') #密码 web.type('pass',into ='password') web.click('下一步') #现在您已登录!! url ='https:// web_page' web.go_to(URL) ################################ #上传CSV源文件: WebElement = webdriver.find_element_by_class_name('ignore-inline-attach') WebElement.sendKeys(“ C:/my_path/test.csv”); ################################ 运行此代码时,出现以下错误消息: AttributeError:模块'selenium.webdriver'没有属性'findElement' 我在网上找到了一些示例脚本,并尝试了一些想法,但是却无济于事。我上面发布的两行代码似乎是前进的最佳方法,但是我似乎无法使它正常工作。这里有人知道如何执行此操作吗?谢谢! 目录(webdriver) #结果: ['ActionChains',  “ Android”,  '黑莓',  '铬',  “ ChromeOptions”,  “所需功能”,  '边缘',  “ Firefox”,  “ FirefoxOptions”,  “ FirefoxProfile”,  “就是”,  'IeOptions',  '歌剧',  'PhantomJS',  '代理',  '远程',  '苹果浏览器',  'TouchActions',  “ WebKitGTK”,  'WebKitGTKOptions',  '__builtins__',  '__cached__',  '__doc__',  '__文件__',  '__loader__',  '__名称__',  '__包__',  '__路径__',  '__spec__',  '__版__',  'android',  '黑莓',  '铬',  '共同',  '边缘',  'firefox',  “就是”,  '歌剧',  'phantomjs',  '远程',  '苹果浏览器',  '支持',  'webkitgtk']

1 个答案:

答案 0 :(得分:1)

由于find_element_by_class_name函数属于webdriver.driver而不是webdriver而引发错误。请注意,这段代码将打开两个浏览器窗口,而不是一个,因为:

  

“基于selenium框架的python Web自动化库”

如果您查看来源,则可以看到:

self.driver = webdriver.Chrome(executable_path=driverpath , chrome_options=options)

这意味着您将在这两行中打开两个标签:

driver = webdriver.Chrome(executable_path= r'C:/Users/ryans/OneDrive/Desktop/Briefcase/Python Scripts/chromedriver.exe')

web = Browser()

您实际上并不需要。可以通过以下方式解决:

import requests
import selenium
from selenium import webdriver
from bs4 import BeautifulSoup
from webbot import Browser

web = Browser()
url = 'https://web_site'
web.go_to(url)

# 1st validation
web.type('email' , into='username')
web.click('Continue')

# 2nd validation
web.type('email' , into='username')
web.click('Next')

# password
web.type('pass' , into='password')
web.click('Next')

# Now you are logged in!!
url = 'https://web_page'
web.go_to(url)

# upload CSV Source File:
WebElement = web.driver.find_element_by_class_name('ignore-inline-attach')
web.driver.sendKeys("C:/my_path/test.csv");

# Close browser.
web.close_current_tag()

很高兴为您提供帮助:)