在Python Selenium中通过xPath定位表元素

时间:2017-08-03 01:54:27

标签: python html selenium

我复制了我想点击的某个元素的xPath,并获得了以下内容:

//*[@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(消息,屏幕,堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素

1 个答案:

答案 0 :(得分:1)

XPATH可能包含id(或许多其他HTML标记),但这并不意味着driver.find_element_by_xpath('//*[@id="ctl00_ctl00_ctl00_body_homebody_PageMainContent_ResultsGrid_ctl00__0"]/td[1]/a').click() 是XPATH。使用:

//*

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

另外,re:你对OP的评论 - private lateinit var myReceiver: BroadcastReceiver override fun onStart() { super.onStart() myReceiver = registerReceiver(IntentFilter(BROADCAST_SOMETHING_HAPPENED)) { intent -> when (intent?.action) { BROADCAST_SOMETHING_HAPPENED -> handleSomethingHappened() } } } override fun onStop() { super.onStop() unregisterReceiver(myReceiver) } 指定相对XPATH与绝对XPATH - 本质上意味着它跳过了初始和标签并直接进入DOM的中间。