send_Keys因Chromedriver无头而失败

时间:2019-09-08 12:12:01

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver

我是硒的新手,我正在尝试使用我从以下站点输入的特定日期来获取费率: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(我不想要)。

1 个答案:

答案 0 :(得分:1)

在Linux Mint上,无论有没有headless,在两种情况下我都得到错误的结果-但我可以看到它期望使用美国格式MM/DD/YYYY-'09/06/2019'的日期。

如果我使用'09/06/2019',那么无论有没有headless,我都会得到正确的结果。