Используйте selenium в odoo13

#python #selenium #odoo

#python #selenium #odoo

Вопрос:

Любой может использовать selenium или что-то подобное в модуле odoo.

Когда я запускаю selenium в одиночку, он возвращает нормальный результат, но когда я интегрирую его в модуль odoo

я получил ошибку

 selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from tab crashed
  

вот мой код

 /*helper.py*/

from selenium import webdriver
from selenium.webdriver import Chrome
from time import sleep

def get_address(tax):
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    driver = Chrome('chromedriver',options=options)
    driver.get("https://dichvuthongtin.dkkd.gov.vn/inf/default.aspx")
    driver.find_element_by_css_selector('#FrontPG-2').click()
    driver.find_element_by_css_selector('#ctl00_C_RptProdGroups_ctl02_LiActiveProdGroup #LnkActiveProdGroup').click()
    a = driver.find_element_by_css_selector("#ctl00_C_UC_ENT_LIST1_ENTERPRISE_GDT_CODEFilterFld")
    a.click()
    a.send_keys(tax)
    driver.find_element_by_css_selector('#ctl00_C_UC_ENT_LIST1_BtnFilter').click()
    sleep(0.5)
    result = driver.find_element_by_css_selector('#ctl00_C_UC_ENT_LIST1_CtlList_ctl02_Cmd4').text
    return result
  
 /*einvoice_invoice.py*/
from odoo import models, fields, api
from . import helper

class ResPartner(models.Model):
    _inherit = "einvoice.invoice"

    @api.onchange('tax')
    def _get_partner_info(self):
        print("haha")
        address = helper.get_address(self.tax)
        print(address)
        self.user_address= address
  

Комментарии:

1. Привет, я столкнулся с такой же проблемой. Есть ли у вас какое-либо решение?

2. @BalvantRamani сейчас я использую selenium с phantomjs

Ответ №1:

решение этого вопроса — установить Selenium Grid и PyVirtualDisplay (для этого вы можете использовать docker) и попробовать с Remote() опцией:

 webdriver.Remote(URL_SERVER_SELENIUM, options);
  

Это работает для меня.