Автор Тема: Авариите на чез.  (Прочетена 6466 пъти)

4096bits

  • Напреднали
  • *****
  • Публикации: 3635
    • Профил
Re: Авариите на чез.
« Отговор #60 -: Feb 22, 2020, 22:59 »
Ами казах ти да сложиш твоя път до chromedriver. Не да използваш моя.
Нали си го пъхнал в /usr/bin/
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

jet

  • Напреднали
  • *****
  • Публикации: 2106
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Авариите на чез.
« Отговор #61 -: Feb 23, 2020, 00:11 »
На оная работа път ли и викате вече  ;D
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

4096bits

  • Напреднали
  • *****
  • Публикации: 3635
    • Профил
Re: Авариите на чез.
« Отговор #62 -: Feb 23, 2020, 00:48 »
Така се получава  ;D
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

supportpc

  • Напреднали
  • *****
  • Публикации: 121
    • Профил
Re: Авариите на чез.
« Отговор #63 -: Feb 24, 2020, 09:24 »
from selenium import webdriver


options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('log-level=3')
options.add_experimental_option('excludeSwitches', ['enable-logging'])

chromedriver='/usr/bin/chromedriver'

driver = webdriver.Chrome(chromedriver,
                          options=options)

driver.get('http://www.cez.bg/bg/e-uslugi/avarii-remonti.html')
driver.switch_to.frame(driver.find_elements_by_tag_name('iframe')[0])
driver.find_element_by_id('searchField').send_keys('Перник')


for element in driver.find_elements_by_class_name('ui-btn'):
    # print(element.text)
    if element.text.startswith('Перник'.upper()):
        element.click()
       
        status = driver.find_element_by_class_name('ui-body').text
        print(status)

Сега това дава
Traceback (most recent call last):
  File "chez.py", line 13, in <module>
    options=options)
TypeError: __init__() got an unexpected keyword argument 'options'

Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 3635
    • Профил
Re: Авариите на чез.
« Отговор #64 -: Feb 24, 2020, 15:02 »
Пробвай, да промениш този ред
Код:
driver = webdriver.Chrome(chromedriver,
                          options=options)
така:
Код:
driver = webdriver.Chrome(chromedriver,
                          chrome_options=options)

Ако аз използвам второто, ми излиза съобщение, че chrome_options е deprecated. Може да си инсталирал по-стара версия на Selenium.

Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

supportpc

  • Напреднали
  • *****
  • Публикации: 121
    • Профил
Re: Авариите на чез.
« Отговор #65 -: Mar 02, 2020, 14:59 »
не става нещо
#!/usr/bin/env python3

from selenium import webdriver


options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('log-level=3')
options.add_experimental_option('excludeSwitches', ['enable-logging'])

chromedriver='/usr/bin/chromedriver'

driver = webdriver.Chrome(chromedriver,
                          chrome_options=options)
 

driver.get('http://www.cez.bg/bg/e-uslugi/avarii-remonti.html')
driver.switch_to.frame(driver.find_elements_by_tag_name('iframe')[0])
driver.find_element_by_id('searchField').send_keys('Перник')


for element in driver.find_elements_by_class_name('ui-btn'):
    # print(element.text)
    if element.text.startswith('Перник'.upper()):
        element.click()
       
        status = driver.find_element_by_class_name('ui-body').text
        print(status)


тово е грешката
Traceback (most recent call last):
  File "./chez.py", line 14, in <module>
    chrome_options=options)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/chromium is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=73.0.3683.75,platform=Linux 4.9.0-12-amd64 x86_64)
Активен

remotexx

  • Напреднали
  • *****
  • Публикации: 1081
    • Профил
Re: Авариите на чез.
« Отговор #66 -: Mar 02, 2020, 16:29 »
Не че съм експерт по питони, смоци и т.п. ама ето какво ми изплю търсачката за тази грешка -
  (unknown error: DevToolsActivePort file doesn't exist)

Код
GeSHi (Python):
  1. chromeOptions.add_argument("--remote-debugging-port=9222")

А в отговора има и др. пожелателни опции

https://stackoverflow.com/questions/56637973/how-to-fix-selenium-devtoolsactiveport-file-doesnt-exist-exception-in-python
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6053
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Авариите на чез.
« Отговор #67 -: Nov 19, 2020, 10:38 »
Днес се присетих за тази тема и по-точно за Selenum. И се сетих, че преди година време чух за поредната му алтернатива. Казва се Cypress – https://www.cypress.io/.

Тогава пича, който я препоръча, каза:

Цитат
Има изключително много възможности за тестване, само че не става за тестване на SalesForce. За всичко друго е супер и много по добре от Selenium според мене.

Сигурен съм, че професионалистите сте чували за кипариса, а някои дори сте го ползвали. Слагам го в темата само, защото по някое време почна „мерене на технологията“ и така да има още един вариант за пълнота.

Иначе Васко отдавна си е изпълнил задачата, ама това не пречи за друга случка.

Поздрави!
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

PaperNick

  • Напреднали
  • *****
  • Публикации: 287
  • Window Manager: Xfce
    • Профил
Re: Авариите на чез.
« Отговор #68 -: Nov 19, 2020, 19:11 »
Днес се присетих за тази тема и по-точно за Selenum. И се сетих, че преди година време чух за поредната му алтернатива. Казва се Cypress – https://www.cypress.io/.

Тогава пича, който я препоръча, каза:

Цитат
Има изключително много възможности за тестване, само че не става за тестване на SalesForce. За всичко друго е супер и много по добре от Selenium според мене.

Бях чувал за Cypress, но не бях цъкал с него досега. Разписах проверките за аварии на ЧЕЗ и се получи доста добре.

Ето и кода:
Код
GeSHi (Javascript):
  1. const CEZ_BREAKDOWNS_URL = 'https://info.cez.bg/js/avarii/av1.php';
  2. const NO_BREAKDOWNS_ASSERT_MESSAGE = 'няма прекъсвания на захранването';
  3.  
  4. const populatedPlaces = [
  5.  { name:'Перник', fullMatch: false },
  6.  { name:'Кюстендил', fullMatch: false },
  7.  { name: 'Буново, общ. Кюстендил', fullMatch: true },
  8. ];
  9.  
  10. describe('CEZ Breakdowns', () => {
  11.  beforeEach(() => {
  12.    // https://docs.cypress.io/api/events/catalog-of-events.html#Examples
  13.    cy.on('uncaught:exception', (err, runnable) => {
  14.      // An "Uncaught ReferenceError: object is not defined" exception is thrown from CEZ webpage.
  15.      // Ignore it so that the execution can continue.
  16.      // Return false to prevent the error from failing the current test.
  17.      return false;
  18.    });
  19.  });
  20.  
  21.  function checkBreakdown(place, fullMatch) {
  22.    it(`should not have any breakdowns for "${place}"`, () => {
  23.      cy.visit(CEZ_BREAKDOWNS_URL);
  24.  
  25.      cy.get('#searchField').type(place);
  26.  
  27.      const searchValue = fullMatch ? place.toUpperCase() : new RegExp(`^${place.toUpperCase()}`);
  28.      const placeSuggestion = cy.get('#suggestions .ui-btn').contains(searchValue, { matchCase: true });
  29.  
  30.      placeSuggestion.should('have.length.greaterThan', 0);
  31.  
  32.      placeSuggestion.click();
  33.  
  34.      cy.get('[data-role="content"] .ui-body').should('contain', NO_BREAKDOWNS_ASSERT_MESSAGE);
  35.    });
  36.  }
  37.  
  38.  populatedPlaces.forEach(place => checkBreakdown(place.name, place.fullMatch));
  39. });
  40.  

Ето и как се пуска:
Код
GeSHi (Bash):
  1. mkdir cez_checker
  2. cd cez_checker/
  3. npm init --yes
  4. npm install cypress --save-dev
  5. echo '{}' > cypress.json
  6. mkdir -p cypress/integration
  7. touch cypress/integration/cez_breakdown_spec.js
  8.  
  9. # Поставете съдържанието на скрипта в "cypress/integration/cez_breakdown_spec.js"
  10.  
  11. npx cypress run --quiet

В браузъра се пуска с:
Код
GeSHi (Bash):
  1. npx cypress open

След изпълнението има дори видео запис :o
Код
GeSHi (Bash):
  1. $ ls cypress/videos/
  2. cez_breakdown_spec.js.mp4

А, да, трябва да инсталирате NodeJS.
Активен

За да вървиш напред, понякога се налага да започнеш отначало.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6053
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Авариите на чез.
« Отговор #69 -: Nov 19, 2020, 19:18 »
Еха, Пейпър много яко. Сега разбирам думите на Алекс, че това е много добро.

Аз самия не го бях пробвал. Ама реално и Селениум не съм.

Страшен си!
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Demayl

  • Напреднали
  • *****
  • Публикации: 101
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Авариите на чез.
« Отговор #70 -: Nov 23, 2020, 17:34 »
Ето едно примерче за София - Перник е с ид 149
Код
GeSHi (Bash):
  1. curl -d "city_id=153&page=1" -X POST https://info.cez.bg/js/avarii/contents.php | grep -oP '<span style="float:left;font-size:small">.*?<\/span>' | sed 's/<[^b][^<>]*>//g'
Активен