Программа нажимает на нужную кнопку. (Python) - PullRequest
1 голос
/ 27 марта 2020

Он пишет программу на Python с Selenium. На сайте у меня есть кнопка:

<button class="_rfh _4jy0 _4jy4 _517h _51sy _42ft" type="submit" value="1"><i alt="" class="_3-8_ img sp_DV9drRVqFBy sx_08f171"></i>Udostępnij</button>

, и я пишу в моей программе, что он будет нажимать эту кнопку:

driver.find_element_by_xpath('//*[@class="_4jy0 _4jy4 _517h _51sy _42ft"]').click()

, но программа не нажимает на эту кнопку, а просто нажимает на другую на этой странице, которая выглядит следующим образом:

<button class="likeButton _4jy0 _4jy4 _517h _51sy _42ft" data-testid="page_profile_like_button_test_id" type="submit" value="1"><i alt="" class="_3-8_ img sp_DV9drRVqFBy sx_e53c72"></i>Lubię to!</button>

Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Пожалуйста, проверьте, является ли класс динамическим c или нет. Также проверьте, работает ли ниже xpath для вас

WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH,"//button[@type='submit' and @value='1']"))).click()

или

WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH,"//*[contains(text(), 'Udostępnij')]"))).click()

Примечание: Пожалуйста, добавьте ниже импорта

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
0 голосов
/ 28 марта 2020

Он не вставит весь код, потому что он слишком длинный. Место возникновения ошибки:

 WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//*[contains(text(), 'Udostępnij')]"))).click()
    if jakile == "nieskonczonosc":
        time.sleep(0.1)
    if jakile == "okreslonailosc":
        global i
        i += 1
    driver.find_element_by_xpath("//button[@class='mat-focus-indicator mat-icon-button mat-button-base mat-primary']").click()
    time.sleep(2)
    driver.switch_to.window(driver.window_handles[-1])
    time.sleep(2)
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//*[contains(text(), 'Udostępnij')]"))).click()
    time.sleep(1)
    driver.switch_to.window(driver.window_handles[0])
    time.sleep(2)
    if jakile == "nieskonczonosc":
        time.sleep(0.1)
    if jakile == "okreslonailosc":
        if i > ileraz:
            driver.quit()
            skonczono()
    try:
        testt = driver.find_element_by_xpath('/html/body/lp-root/lp-ui-wrapper/lp-main-ui/div[2]/lp-page-content/div/main/ng-component/ng-component/lp-available-actions-page/lp-card/lp-available-actions-list/lp-card/lp-overlay-wrapper/lp-card/div/lp-overlay-wrapper/lp-card/lp-card/div/mat-card/div[2]/span')
    except Exception:
        odpowiadanie_obserwowaniestronfb_2()
    driver.quit()
    zleskonczono()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...