我是硒的新手,我正在尝试使用我从以下站点输入的特定日期来获取费率:OANDA。例如,Send_Keys的值为“ 2019-09-06”,USD-EUR的要价平均为0.90588。
它可以正常运行,而且没有错误,结果是正确的。但是,当我在其中添加无头选项时,Send_Keys失败,并且它今天返回要价平均值,这不是我想要的。
此程序稍后将在Linux服务器上执行,因此我必须在脚本中添加headless。如何解决这个问题?
谢谢。
chrome版本:75.0.3770.80 的Python:3.6.5 Linux:Red Hat Enterprise Linux Server 7.4(Maipo)
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import pandas as pd
from selenium.webdriver.common.keys import Keys
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--window-size=1920x1080')
chrome_options.add_argument('--disable-gpu')
chrome_path = 'D://work/chromedriver.exe'
driver = webdriver.Chrome(chrome_path,chrome_options=chrome_options)
#start to crawl
driver.get('https://www1.oanda.com/currency/converter/')
time.sleep(1)
end_date_input = driver.find_element_by_id('end_date_input')
end_date_input.send_keys(Keys.CONTROL + 'a')
time.sleep(1)
end_date_input.send_keys(Keys.DELETE)
time.sleep(1)
end_date_input.send_keys('2019-09-06')
time.sleep(1)
end_date_input.send_keys(Keys.ENTER)
time.sleep(1)
soup = BeautifulSoup(driver.page_source, 'html.parser')
table_soup= soup.findAll('tr',{'class':'body'})[1]
bidAskAskAvg = round(float(table_soup.findAll('td')[4].text),8)
print(bidAskAskAvg)
预期:0.90588,但返回值:0.90721(我不想要)。
答案 0 :(得分:1)
在Linux Mint上,无论有没有headless
,在两种情况下我都得到错误的结果-但我可以看到它期望使用美国格式MM/DD/YYYY
-'09/06/2019'
的日期。
如果我使用'09/06/2019'
,那么无论有没有headless
,我都会得到正确的结果。