简体   繁体   English

包含Selenium Python中的文本

[英]Contains text in Selenium Python

I am trying to capture an Error which would restart my program and change proxy but I am unable to catch the error as its stored like this and classes are dynamically named : 我正在尝试捕获一个错误,该错误将重新启动我的程序并更改代理,但是由于该错误的存储方式和类的动态命名,我无法捕获该错误:

<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>

so I am trying to catch the xpath by this function but I am un able to do so. 因此,我试图通过此函数捕获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)

To Handle dynamic element use WebDriverwait and following Xpath Startegy. 要处理动态元素,请使用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)

You can check if the source of the web-page contains special text. 您可以检查网页的来源是否包含特殊文本。

if 'By signing up, you agree to our ' in browser.page_source:
    pass
    # TODO Exception

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM