我复制了我想点击的某个元素的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:消息:没有这样的元素:无法找到元素
答案 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的中间。