尝试在我的windows 10机器https://github.com/KalleHallden/reddit_automations/blame/master/movie-tickets.py上运行此代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from decouple import config
import time
# the way to locate the button or thing you want on a website in chrome is
# by pressing cmd + shift + c and then you can use your mouse to find the
# info on the element that you want and you can copy the full xpath.
options = webdriver.ChromeOptions()
# options.add_argument('--ignore-certificate-errors')
# options.add_argument('--incognito')
# options.add_argument('--headless')
driver = webdriver.Chrome("/Users/kalle/Downloads/chromedriver83", chrome_options=options)
driver.get(config('THEATRE_SITE'))
# for some odd reason you need to reload the site for it to load.
# possibly a bug of the theatre site
driver.get(config('THEATRE_SITE'))
time.sleep(3)
# select city
button = driver.find_element_by_xpath('/html/body/div[1]/div[3]/div/div/div[1]/div/div[2]/ul/li[1]/label/input')
button.click()
# save city
button = driver.find_element_by_xpath('/html/body/div[1]/div[3]/div/div/div[2]/span/button')
button.click()
time.sleep(2)
# proceed to tickets tab
button = driver.find_element_by_xpath('/html/body/div[1]/nav/div[2]/div[2]/div[1]/ul[1]/li[1]/a')
button.click()
time.sleep(2)
# select the movie you want (should be more specific than just selecting the first one but whateva)
button = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[2]/div/div/div/div[2]/div/div[2]/div[2]/div[2]/ul/li[1]/ul/li/div/div[1]/div/span[2]/a')
button.click()
time.sleep(1)
# select the time you want to go
button = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[1]/div/div/div/div[4]/section/div/div[2]/div[2]/ul/li/ul/li[1]/div/span/span[3]/span[2]/span')
button.click()
time.sleep(1)
# choose amount of people
button = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[2]/div/div/div/div/section/div/div[2]/div/button')
button.click()
time.sleep(2)
# choose seats
button = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[1]/div/div/div/div[2]/section/div[3]/div[2]/button')
button.click()
time.sleep(2)
# pay
button = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[1]/div/div/div/div[2]/section/div[4]/div/div[2]/button/span')
button.click()
字符串
我安装了所有正确的程序:
- 运行Python 3.8
- 安装chrome webdriver
- 运行版本84稳定的Chrome Web浏览器
当我运行这个程序时,它打开了chrome,但是我得到了一个空白的网页,上面什么都没有,只有一些文本,上面写着“数据:”,除此之外什么都没有。
这是我在VS代码中得到的错误:
:\Users\user>python c:/chromedriver_win32/movie-tickets1.py
c:/chromedriver_win32/movie-tickets1.py:15: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=r'C:\chromedriver_win32\chromedriver.exe', chrome_options=options)
DevTools listening on ws://127.0.0.1:29442/devtools/browser/872d4312-b51d-4a38-bc1b-3b80495950
Traceback (most recent call last):
File "c:/chromedriver_win32/movie-tickets1.py", line 17, in <module>
driver.get(config("https://www.google.co.uk"))
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\decouple.py", line 199, in __call__
return self.config(*args, **kwargs)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\decouple.py", line 83, in __call__
return self.get(*args, **kwargs)
File "C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\decouple.py", line 68, in get
raise UndefinedValueError('{} not found. Declare it as envvar or define a default value.'.format(option))
decouple.UndefinedValueError: https://www.google.co.uk not found. Declare it as envvar or define a default value.
型
任何帮助将不胜感激,我不知道为什么解耦是不工作的。
5条答案
按热度按时间vfh0ocws1#
此错误消息...
字符串
...意味着在你的程序中你已经使用了
chrome_options
来启动一个Selenium驱动的ChromeDriver启动的google-chromeBrowsing Context。chrome_options
现在已弃用,您必须使用options
,并将 ChromeDriver 的 * 绝对路径 * 与扩展名一起传递。解决方案
当您在windows-10系统上触发测试时,实际上您的代码行将是:
型
ttp71kqs2#
没事了!
字符串
bqujaahr3#
否,如果您像这样覆盖它,错误将仍然存在
字符串
它将是正确的
型
ippsafx74#
字符串
q9rjltbz5#
如果您现在看到
WebDriver.__init__() got an unexpected keyword argument 'chrome_options'
,这是由于selenium
4.10.0
中的更改:https://github.com/SeleniumHQ/selenium/commit/9f5801c82fb3be3d5850707c46c3f8176e3ccd8e的数据
chrome_options
已删除。此外,驱动程序管理器现在内置在selenium中,因此您不再需要使用单独的webdriver_manager
。Selenium团队在这里谈到了这一点:https://www.linkedin.com/pulse/selenium-manager-best-tool-from-you-can-forget-david-burns/的使用
service
和options
参数传入设置:字符串
注意:有人错误地关闭了WebDriver.init() got an unexpected keyword argument chrome_options作为一个重复,并指出这个页面有答案,但它不是同一个问题。此解决方案回答了标记为重复的问题。