selenium 在heroku中使用expected_conditions时获取超时异常

b09cbbtk  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(129)

我有一个selenium机器人,它在本地工作得很好,但是在heroku上,每当它处于expected_condition(元素可点击,元素定位的可见性和元素定位的存在性)时,就会引发TimeoutException。任何人都知道如何在heroku中修复这个问题。下面是一个我使用expected_conditions的示例

element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'productlistning__btn')]")))

以及我在代码中使用的chrome参数:

chrome_options = Options()
chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--no-sandbox")
driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), options=chrome_options)
gab6jxml

gab6jxml1#

我猜你没有定义屏幕大小的驱动程序,而在无头模式的默认屏幕大小是800600。
因此,要使Selenium代码正常工作,请尝试将屏幕大小设置为最大值或1920,1080。如下所示:

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument("window-size=1920,1080")

或者

options = Options()
options.add_argument("start-maximized")

相关问题