Содержит текст в Selenium Python - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь перехватить ошибку, которая перезапустила бы мою программу и сменила прокси, но я не могу перехватить ошибку, так как она хранится следующим образом, а классы имеют динамическое имя:

<p class="g4Vm4">By signing up, you agree to our <a target="_blank" href="https://help.instagram.com/581066165581870">Terms</a> . Learn how we collect, use and share your data in our <a target="_blank" href="https://help.instagram.com/519522125107875">Data Policy</a> and how we use cookies and similar technology in our <a target="_blank" href="/legal/cookies/">Cookies Policy</a> .</p>

поэтому я пытаюсь поймать xpath с помощью этой функции, но я не могу это сделать.

def has_error(browser):
        try:            #/*[contains(text(), 'technology')]/html/body/span/section/main/div/article/div/div[1]/div/form/p"
            browser.find_element_by_xpath("/html/body//*[contains(text(),'technology')]")
            return False
        except: return True
        if not has_error(browser):
            print('Error found! , aborted!')
            browser.quit()
            os.execv(sys.executable, ['python'] + sys.argv)

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Вы можете проверить, содержит ли источник веб-страницы специальный текст.

if 'By signing up, you agree to our ' in browser.page_source:
    pass
    # TODO Exception
0 голосов
/ 03 мая 2019

Для обработки динамического элемента используйте WebDriverwait и следующие Xpath Startegy.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions


element=WebDriverWait(driver,30).until(expected_conditions.element_to_be_clickable((By.XPATH,'//p[contains(.,"technology")]')))
print(element.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...