Как получить атрибут, дождитесь изменения состояния в Firefox Selenium, python, window, version: 67.0 (64-bit) + selenium 3.9.0 - PullRequest
0 голосов
/ 28 мая 2019

Хотите подтвердить, завершена ли загрузка данных.

Информация о целевых атрибутах, как показано ниже:

<richlistitem  class="download download-state" active="true" 
orient="horizontal" 
onclick="DownloadsView.onDownloadClick(event);" state="1" 
exists="true" selected="true">....<description 
class="downloadDetails downloadDetailsHover" crop="end" 
value="49.5 KB — xxx.com:8080 — 8:09 PM"/><description 
class="downloadDetails downloadDetailsButtonHover" 
crop="end"/></vbox></hbox><toolbarseparator/><button 
class="downloadButton downloadIconShow" 
oncommand="DownloadsView.onDownloadButton(event);" 
tooltiptext="Open Containing Folder"/></richlistitem>

# Current script:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://stackoverflow.com/")

download_CSV =dr.find_element_by_id('xxxx')
download_CSV.click()
NEW_TAB = driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
cur_windows = driver.window_handles # NEW TAB

time.sleep(2)

driver.switch_to.window(cur_windows[1])
driver.get('about:downloads')
# EC.until the download message attribute change script

Как получить атрибутсостояние = "1" (1 = означает, что загрузка завершена, 0 = еще нет) или существует = "истина", нужно подождать, пока состояние = "1" не изменится с "0" / или существует = "истина" появится? (добро пожаловать для другого метода, определение файла уже завершено загрузка)

Невозможно применить этот ответ к моей ситуации. Селен: дождаться изменения значения атрибута

1 Ответ

1 голос
/ 28 мая 2019

Я не знаю, будет ли это работать, но, возможно, вы можете попробовать с ожидаемыми условиями: sence_of_element_located .

Если на веб-сайте нет другого элемента, отвечающего на локатор Xpath

//richlistitem[@state='1']

Может быть, это решение вашей проблемы:

WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.XPATH, '//richlistitem[@state="1"]')))

Этот код будет искать элемент "// richlistitem [@ state = '1']" в течение 10 секунд, пока элемент не будет расположен в DOM, в противном случае он вернет TimeoutException

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...