windows 搜索屏幕上的字符串损坏

Broken string on windows search screen

我正在开发一个 python 应用程序来通过 whatsapp 发送一些图像,但是当我尝试附加图像时,单词被破坏了,有人知道会发生什么吗?

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
AbreAnexo = driver.find_element_by_css_selector('span[data-icon="clip"]')
AbreAnexo.click()
AbreImagem = driver.find_element_by_css_selector('button[class="Ijb1Q"]')
AbreImagem.click()
pyautogui.typewrite("C:\Users\f_teicar\Documents\Lanchonete\001-Cardapio.png",interval=0.02)
time.sleep(5)
pyautogui.press('enter')
time.sleep(5)
pyautogui.press('enter')

预计是写C:\Users\f_teicar\Documents\Lanchonete[=20=]1-Cardapio.png 但输出是 car\Documents\Lanchonete[=21=]1-Cardapio.png

尤其是在外部网站上,加载页面需要一段时间。这意味着下一步(或其中的一部分)可能会被忽略,因为页面尚未准备好接收来自 Selenium 客户端的进一步操作。

time.sleep(n) 其中 n 是等待的秒数,这是一种等待页面加载的快速方法,但如果它比您指定的时间长一点,它会失败,如果它加载得更快,那么它会浪费时间。所以我使用一个函数来等待这样的页面。

@contextmanager
from selenium import webdriver
from selenium.webdriver.support.expected_conditions import staleness_of
from contextlib import contextmanager

def wait_for_page_load(timeout=MAX_WAIT):
    """ Wait for a new page that isn't the old page 
    """
    old_page = driver.find_element_by_tag_name('html')
    yield
    webdriver.support.ui.WebDriverWait(driver, timeout).until(staleness_of(old_page))

要调用该函数,请使用类似

的东西
with self.wait_for_page_load():
    AbreImagem.click()

其中第二行是导致加载新页面的任何内容。请注意,此过程取决于旧页面中是否存在标记,这通常非常可靠。