Определить элемент с заданным текстом с помощью Python Selen - PullRequest
0 голосов
/ 03 июля 2018

У меня есть элемент ниже на веб-странице, которую я пытаюсь очистить.

<a href="http://www.mylink/?p=20391">Sup Bonds Result June 26, 2018</a>

Ниже приведен код, который я пытаюсь использовать, но, похоже, он не работает, хотя значение существует. Первоначально это работало несколько раз, но потом не дает результата.

try:
    element=driver.find_element_by_partial_text('Sup Bonds Result June 26, 2018')

except NoSuchElementException:
    driver.quit()

ниже приведена ошибка, которую я получил, я уже использовал time.sleep, чтобы позволить сценарию найти элемент.

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"Sup Bonds Result June 26, 2018"}

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Кажется, ты был довольно близко. Поскольку вы просто пытаетесь найти ( не щелкающий ) элемент, вам нужно вызвать WebDriverWait для видимости элемента как следующим образом:

try:
    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.PARTIAL_LINK_TEXT, "Sup Bonds Result June 26, 2018"))).click()
except TimeoutException:
    driver.quit()

Примечание : необходимо добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
0 голосов
/ 03 июля 2018

Попробуйте применить ExplicitWait , как показано ниже:

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

try: 
    wait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Sup Bonds Result June 26, 2018")))
except TimeoutException:
    driver.quit()

Также обратите внимание, что если вы хотите использовать поиск по тексту ссылки (частичный текст ссылки), вам нужно передать текст точно так, как он отображается на странице в браузере , но не так, как он отображается в источнике страницы. Так что, если он выглядит на странице как "SUP BONDS...", вам нужно использовать то же самое в коде

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