Задать вопрос
@datel

Почему Linux забил на --user-data-dir при запуске Selenium?

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
import tempfile

mobile_emulation = {
        "deviceMetrics": { "width": 480, "height": 240, "pixelRatio": 1.0 }
    }
user_data = tempfile.mkdtemp()

chrome_options = Options()
chrome_options.add_argument(f'--user-data-dir={user_data}')
# chrome_options.binary_location = r'/root/.cache/selenium/chrome/linux64/134.0.6998.165/chrome'
chrome_options.add_argument('user-agent=Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19')
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')

driver = webdriver.Chrome(
    options=chrome_options
    # service=Service(executable_path='/root/.cache/selenium/chromedriver/linux64/134.0.6998.165/chromedriver')
)
driver.get(url='https://e.tb.cn/h.60mcESJ?tk=5cgIerRzkdZ')

price = float(driver.find_element(By.CLASS_NAME, value='price').text)
name = driver.find_element(By.CLASS_NAME, value='title').text
img = driver.find_element(By.CLASS_NAME, value='slick-image').get_attribute('src')

print(price, name, img, sep='\n')

driver.quit()


Вот почему он не работает и выдаёт эту ошибку?
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: probably user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
А если прочитать ошибку? Один экземпляр хрома уже использует этот профиль. Кильните процесс и начните заново, а также оберните в try except сам код, а quit в finally, чтобы больше не оставалось висячих процессов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы