Otwieranie listy rozwijanej

0

Witam, robię sobie do portfolio program i utknąłem. Chcę zaznaczyć na olx w Porsche model 944, doszedłem do etapu że rozwijam menu ale nie umiem zaznaczyć opcji 944 ponieważ nie zależnie od wybranego modelu wszystkie klasy, div itp mają te same nazwy itd (robią do chyba hover). Nie wiem jak się za to zabrać, czy może ktoś mi pomóc zaznaczyć opcję 944? Bardzo dziękuję.

https://www.olx.pl/d/motoryzacja/samochody/porsche/

def get_driver(self):
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=self.option)
    driver.get('https://www.olx.pl/d/motoryzacja/samochody/porsche/')
    driver.maximize_window()
    driver.find_element(By.ID, 'onetrust-accept-btn-handler').click() # akceptacja cookies
    driver.find_element(By.CLASS_NAME, 'css-mf5jvh').click() # rozwinięcie listy

    # dalej potrzebuję zaznaczyć opcję 944
    
    time.sleep(5)
    # print(driver.find_element(By.CSS_SELECTOR, 'class="css-1r7x5tm')) # ta linia jest źle
    # print(time.sleep(5))
46

Znaleźć element po tekście i przeskoczyć o hierarchie wyżej - do rodzica (którym może być np checkbox)

0
Mr Coin napisał(a):

(By.CSS_SELECTOR, 'class="css-1r7x5tm')) # ta linia jest źle

Jeżeli nawet to zadziała, to za tydzień może przestać działać, ponieważ css-1r7x5tm wygląda na jakąś automatycznie wygenerowaną klasę CSS.

Ja bym na twoim miejscu:

  1. upewnił się, że to Porsche 944 tam faktycznie będzie widoczne na stronie (dopiero po wpisaniu 944 w szukajkę mi się wyświetla)
  2. wyszukał nie po klasie, ale po elemencie, który zawiera w środku tekst "Porsche 944"

time.sleep(5)

Nie ma w tym Selenium jakiejś lepszej/bardziej niezawodwnej formy oczekiwania niż ustawienie sleepa?

0
LukeJL napisał(a):
Mr Coin napisał(a):

(By.CSS_SELECTOR, 'class="css-1r7x5tm')) # ta linia jest źle

Jeżeli nawet to zadziała, to za tydzień może przestać działać, ponieważ css-1r7x5tm wygląda na jakąś automatycznie wygenerowaną klasę CSS.

Ja bym na twoim miejscu:

  1. upewnił się, że to Porsche 944 tam faktycznie będzie widoczne na stronie (dopiero po wpisaniu 944 w szukajkę mi się wyświetla)
  2. wyszukał nie po klasie, ale po elemencie, który zawiera w środku tekst "Porsche 944"

time.sleep(5)

Nie ma w tym Selenium jakiejś lepszej/bardziej niezawodwnej formy oczekiwania niż ustawienie sleepa?

hej, sleep ustawiłem tylko na chwilę żeby strona mi się nie zamknęła, później to wywalę i wyniki będę kierował do Tkinter

1 użytkowników online, w tym zalogowanych: 0, gości: 1