<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://transhumanist.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%3A%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%3A_%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D1%81_Selenium</id>
	<title>Обсуждение:Проект: Экспорт с Selenium - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://transhumanist.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%3A%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%3A_%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D1%81_Selenium"/>
	<link rel="alternate" type="text/html" href="https://transhumanist.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:_%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D1%81_Selenium&amp;action=history"/>
	<updated>2026-09-16T14:57:51Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://transhumanist.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:_%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D1%81_Selenium&amp;diff=2165&amp;oldid=prev</id>
		<title>Experimentalist: /* Firefox */ новая тема</title>
		<link rel="alternate" type="text/html" href="https://transhumanist.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:_%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D1%81_Selenium&amp;diff=2165&amp;oldid=prev"/>
		<updated>2021-03-12T05:40:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Firefox: &lt;/span&gt; новая тема&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Firefox ==&lt;br /&gt;
&lt;br /&gt;
В моём примере работает не всё, сколько бы я не говорил API &amp;quot;не задавать вопросов и сохранять файл&amp;quot;, пользователю понадобится нажать одну кнопку. Диалога загрузки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Transhumanist.online Mediawiki &amp;quot;all pages&amp;quot; downloader.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
from selenium import webdriver&lt;br /&gt;
from selenium.webdriver import Firefox&lt;br /&gt;
from selenium.webdriver.firefox.options import Options&lt;br /&gt;
from selenium.common.exceptions import NoSuchElementException, TimeoutException&lt;br /&gt;
&lt;br /&gt;
from selenium.webdriver.support import expected_conditions&lt;br /&gt;
from selenium.webdriver.common.by import By&lt;br /&gt;
from selenium.webdriver.support.ui import WebDriverWait&lt;br /&gt;
&lt;br /&gt;
from os import getcwd&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
ALL_PAGES_URL = &amp;quot;https://transhumanist.online/Служебная:Все_страницы&amp;quot;&lt;br /&gt;
EXPORT_URL = &amp;quot;https://transhumanist.online/Служебная:Экспорт&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ALL_PAGES_ITEM_QUERY = &amp;quot;.mw-allpages-body &amp;gt; ul.mw-allpages-chunk &amp;gt; li&amp;quot;&lt;br /&gt;
EXPORT_TEXTAREA_QUERY = &amp;quot;textarea.oo-ui-inputWidget-input&amp;quot;&lt;br /&gt;
EXPORT_TODO_ENABLE_TEMPLATES_QUERY = &amp;quot;&amp;quot;&lt;br /&gt;
EXPORT_BUTTON_QUERY = &amp;quot;div.mw-htmlform-submit-buttons button[type=\&amp;quot;submit\&amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def obtain_page_list(headless=True):&lt;br /&gt;
    result = []&lt;br /&gt;
    opts = Options()&lt;br /&gt;
    opts.headless = headless&lt;br /&gt;
    # Disable Selenium browser&amp;#039;s cache&lt;br /&gt;
    profile = webdriver.FirefoxProfile()&lt;br /&gt;
    driver = webdriver.Firefox(profile, options=opts)&lt;br /&gt;
    # Launch browser with our url&lt;br /&gt;
    driver.get(ALL_PAGES_URL)&lt;br /&gt;
    # Extract a page list&lt;br /&gt;
    try:&lt;br /&gt;
        page_items = driver.find_elements_by_css_selector(ALL_PAGES_ITEM_QUERY)&lt;br /&gt;
        page_items = [page_item.get_attribute(&amp;quot;textContent&amp;quot;) for page_item in page_items]&lt;br /&gt;
        result = page_items&lt;br /&gt;
    except NoSuchElementException as e:&lt;br /&gt;
        print(&amp;quot;No such element&amp;quot;, e)&lt;br /&gt;
    driver.quit()&lt;br /&gt;
    return(result)&lt;br /&gt;
&lt;br /&gt;
def download_exported_pages(page_names, headless=True):&lt;br /&gt;
    opts = Options()&lt;br /&gt;
    opts.headless = headless&lt;br /&gt;
    # Disable Selenium browser&amp;#039;s cache&lt;br /&gt;
    profile = webdriver.FirefoxProfile()&lt;br /&gt;
    # Set a save directory&lt;br /&gt;
    save_dir = getcwd()&lt;br /&gt;
    default_types = &amp;quot;application/xml, attachment/xml, text/xml&amp;quot;&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.dir&amp;quot;, save_dir)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.folderList&amp;quot;, 2)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.manager.showWhenStarting&amp;quot;, False)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.manager.useWindow&amp;quot;, False)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.manager.focusWhenStarting&amp;quot;, False)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.manager.showAlertOnComplete&amp;quot;, False)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.download.manager.closeWhenDone&amp;quot;, True)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.helperApps.alwaysAsk.force&amp;quot;, False)&lt;br /&gt;
    profile.set_preference(&amp;quot;browser.helperApps.neverAsk.saveToDisk&amp;quot;, default_types)&lt;br /&gt;
    driver = webdriver.Firefox(profile, options=opts)&lt;br /&gt;
    # Log a save directory&lt;br /&gt;
    print(&amp;#039;Saving a file to &amp;quot;{}&amp;quot;...&amp;#039;.format(save_dir))&lt;br /&gt;
    # Launch browser with our url&lt;br /&gt;
    driver.get(EXPORT_URL)&lt;br /&gt;
    # Wait for a close button to be there.&lt;br /&gt;
    # Otherwise, the page is not ready&lt;br /&gt;
    try:&lt;br /&gt;
        # https://selenium-python.readthedocs.io/waits.html&lt;br /&gt;
        WebDriverWait(driver, 60).until(&lt;br /&gt;
            expected_conditions.element_to_be_clickable((By.CSS_SELECTOR, EXPORT_BUTTON_QUERY))&lt;br /&gt;
        )&lt;br /&gt;
    except TimeoutException:&lt;br /&gt;
        print(&amp;quot;Loading took too much time!&amp;quot;)&lt;br /&gt;
    # Enter a page list to a textarea&lt;br /&gt;
    try:&lt;br /&gt;
        export_textarea = driver.find_element_by_css_selector(EXPORT_TEXTAREA_QUERY)&lt;br /&gt;
        export_textarea.clear()&lt;br /&gt;
        export_textarea.send_keys(&amp;#039;\n&amp;#039;.join(page_names))&lt;br /&gt;
    except NoSuchElementException as e:&lt;br /&gt;
        print(&amp;quot;Markup changed, a CSS selector for EXPORT_TEXTAREA_QUERY needs an update&amp;quot;, e)&lt;br /&gt;
        driver.quit()&lt;br /&gt;
        return&lt;br /&gt;
    # Press an export button to export elements&lt;br /&gt;
    try:&lt;br /&gt;
        export_button = driver.find_element_by_css_selector(EXPORT_BUTTON_QUERY)&lt;br /&gt;
        export_button.click()&lt;br /&gt;
    except NoSuchElementException as e:&lt;br /&gt;
        print(&amp;quot;Markup changed, a CSS selector for EXPORT_BUTTON_QUERY needs an update&amp;quot;)&lt;br /&gt;
        driver.quit()&lt;br /&gt;
        return&lt;br /&gt;
    # Sleep and exit&lt;br /&gt;
    print(&amp;quot;Exiting in 60...&amp;quot;)&lt;br /&gt;
    time.sleep(60)&lt;br /&gt;
    # Close the browser&lt;br /&gt;
    driver.quit()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Main function&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    page_items = obtain_page_list()&lt;br /&gt;
    download_exported_pages(page_items, headless=False)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Диалог загрузки файла возникает в нормальном режиме и вероятно, появляется у headless-браузера.&lt;br /&gt;
Firefox 86.0, [https://github.com/mozilla/geckodriver/releases geckodriver] 0.29.0.&lt;br /&gt;
Страница [https://github.com/SeleniumHQ/selenium/issues/new?assignees=&amp;amp;labels=&amp;amp;template=bug.md bug-issue] SeleniumHQ рекомендует приложить демо, которое загружает статьи, но стоит ли кидать демо на эту Вики?..&lt;br /&gt;
Также нам сразу рекомендуют обращаться к [https://bugzilla.mozilla.org/buglist.cgi?product=Testing&amp;amp;component=Marionette Mozilla].&lt;br /&gt;
Брр, не зря я начал с загрузки файла, этого я обычно не делаю и тут вылезает баг.&lt;/div&gt;</summary>
		<author><name>Experimentalist</name></author>
	</entry>
</feed>