2017-08-03 97 views
2

我复制某一元素我想点击的XPath和获得如下:定位表元素与XPath在Python硒

//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a 

我的代码则包含以下内容:

driver.find_element_by_id("//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a").click() 

任何想法为什么我可能会得到这个错误:r aise exception_class(message,screen,stacktrace) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素

+0

' “// * [@ ID =” ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0 “]/TD [1] /一个”'不是在Python有效的字符串,尝试: ' '''// * [@ ID =“ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0 “]/td [1]/a'''' –

+0

它仍然找不到该元素。使用// *而不是//表格有问题吗?我尝试了两个,但我觉得它可能是一个错误 –

+1

这是一个XPATH - 使用'driver.find_element_by_xpath'而不是'find_element_by_id' – n1c9

回答

1

XPATHs可能包含id(或许多其他HTML标签),但这并不意味着该XPATH是id。使用:

driver.find_element_by_xpath('//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a').click() 

它应该工作 - 假设在您的网站上的该位置有一个有效的XPATH。

此外,您对OP-//*的评论指定了相对XPATH与绝对XPATH - 实质上意味着它始于DOM中间,而不是在多汁的东西之前用HTML进行窜改。