我在Firefox中使用了firebug来获取没有分配ID的链接的xpath。该链接是一个javascript链接,图像作为实际按钮。我希望能够点击此链接,但它无法正常工作。
实际的xpath是'/ html / body / div [2] / div / div / div [3] / div / div / table / tbody / tr [1] / td [2] / form / table / tbody / TR [1] / TD / DIV [1] / DIV /表/ THEAD / TR [2] /第[1] /一个/ IMG“
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
URL = 'http://example.com'
driver.set_window_size(1024, 768)
driver.get(url)
link = driver.find_element_by_xpath(//*[@id="//html/body/div[2]/div/div/div[3]/div/div/table/tbody/tr[1]/td[2]/form/table/tbody/tr[1]/td/div[1]/div/table/thead/tr[2]/th[1]/a/img"])
for link in links:
link.click()
我收到以下错误:
is either invalid or does not result in a WebElement. The following error occurred:\nInvalidSelectorError: Unable to locate an element with the xpath expression //*[@id=/html/body/div[2]/div/div/div[3]/div/div/table/tbody/tr[1]/td[2]/form/table/tbody/tr[1]/td/div[1]/div/table/thead/tr[2]/th[1]/a/img because of the following error:\n[Exception... "The expression is not a legal expression." code: "12" nsresult: "0x805b0033 (SyntaxError)" location: "<unknown>"]' ; Stacktrace:
<a onclick="if(typeof functionx == 'function'){functionx(document.getElement…,'liststuff','');}return false" href="#">
<img style="border: 0px;" onmouseover="this.src='/add-hover.gif';" onmouseout="this.src='/add.gif';" alt="Add" src="/icon-add.gif"></img>
</a>
答案 0 :(得分:4)
不是拥有元素的绝对路径,而是依赖它的父级和属性:
link = driver.find_element_by_xpath('//a[@onclick and @href = "#" and img/@alt = "Add"]')