Как я могу WebDriverWait и getText (), если у меня есть текст, который сделал randomi c - PullRequest
1 голос
/ 26 марта 2020

У меня есть это HTML, и я просто хочу получить часть "DE-3500-0086-E-001". Это текстовое значение всегда будет другим.

<div class="col-lg-2">
  <label>Resultado</label>
  <h4>
     <a id="body_lblResultadoNumero"href="javascript:
     __doPostBack('ctl00$body$lblResultadoNumero','')">DE-3500-0086-E-001</a>
  </h4>
</div>

Перед этим мне нужно дождаться появления этого значения, потому что оно приходит ко мне после нажатия кнопки. Так что я должен ждать чего-то, что я не знаю содержания (это случайно). Могу ли я ждать какой-либо стоимости?

Ответы [ 3 ]

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

Вы можете использовать explicit wait, чтобы убедиться, что ссылка отображается.

Необходим импорт.

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

И ниже должен быть ваш код.

WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, "//a[@id ='body_lblResultadoNumero']"))).text
1 голос
/ 26 марта 2020

Чтобы убедиться, что текст доступен, используйте xpath с этой комбинацией логики c: and text() != ''.

element = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, "//a[@id='body_lblResultadoNumero' and text() !='']")))
print(element.text)
1 голос
/ 26 марта 2020

Проверьте приведенное ниже решение ::

Используя XPATH:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

browser = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")

try:
    myElem = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='col-lg-2']/h4/a")))
    print myElem.text
except TimeoutException:
    print "Loading took too much time!"

Используя ID:

myElem = WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.ID, "body_lblResultadoNumero")))
    print myElem.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...