我有一个这样的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 1和最新版本中选择具有多个属性的xpath?
答案 0 :(得分:2)
我认为应该是这样:
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
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")