Как выбрать SVG с идентификатором? - PullRequest
0 голосов
/ 01 мая 2019

У меня есть такой SVG, которого нет в iFrame:

<svg id="abc123" viewBox="0 0 50 50" width="100%" height="100%">
    <path d="blah..."></path>
</svg>

Я пытался выбрать его с помощью этого xpath, но он не работает.

//*[name()='svg' and @id='abc123']

Каквыбрать xpath с несколькими атрибутами в xpath 1 и последней версии?

1 Ответ

2 голосов
/ 01 мая 2019

Я думаю, что это должно быть так:

driver.find_element_by_xpath("//*[contains(local-name(), 'svg') and contains(@id, 'abc123')]")

РЕДАКТИРОВАТЬ

Простой driver.find_element_by_id("abc123") должен найти элемент, независимо от того, является ли узелsvg, div или еще что-нибудь.

Возможно, это проблема синхронизации, т.е.find_element срабатывает до того, как элемент присутствует на странице.Вы можете попробовать expected_conditions с presence of element located или даже лучше - visibility

https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.ID, "abc123")))
driver.find_element_by_id("abc123")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...