【问题标题】:Unable to locate table element using xpath in selenium无法在 selenium 中使用 xpath 定位表元素
【发布时间】:2021-02-28 11:08:31
【问题描述】:

我必须使用 selenium 在网页上选择一行,而我的代码无法使用 xpath 定位元素。为此,我使用了复选框的 xpath 并尝试单击它。这是我的代码。

#driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[1]/input").click()
    chk= driver.find_element_by_id("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]")
    chk.click()
    
#chck= driver.find_element_by_xpath("html body.nifty-ready div#container.effect div.boxed div#content-container.frame-container div.page-content")

我得到了错误:

NoSuchElementException                    Traceback (most recent call last)
<ipython-input-29-7c151851b480> in <module>()
     66 
     67 #driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[1]/input").click()
---> 68 chk= driver.find_element_by_id("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]")
     69 chk.click()
     70 

NoSuchElementException: Message: Unable to locate element: [id="/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]"]

请提出一个更好的方法来做到这一点。

【问题讨论】:

  • 你为什么用 xpath 调用 .find_element_by_id?
  • 正如@JustinEzequiel 所指出的,将.find_element_by_id 替换为.find_element_by_xpath,它应该可以正常工作。
  • 按 id 选择是一个错字。我只使用xpath。但是 xpath 不起作用,css 选择器仍在工作。我仍然需要进一步进入嵌套的 div 并选择下拉菜单

标签: python html selenium selenium-webdriver python-requests


【解决方案1】:

这应该可以正常工作。

chk = driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div[2]/div/div[1]/table/tbody/tr[18]/td[2]")
chk.click()
    
chck = driver.find_element_by_css_selector("html body.nifty-ready div#container.effect div.boxed div#content-container.frame-container div.page-content")

【讨论】:

  • 阅读documentation.会很有用
  • chck = driver.find_element_by_css_selector("html body.nifty-ready div#container.effect div.boxed div#content-container.frame-container div.page-content div:nth-child(3 ) div.pad-all div") chck.click() 我正在尝试使用 css 选择器访问此元素,但它并没有比 div.page-content 更进一步。我不想打开下拉菜单,它的选择器路径是这个-#content-container > div.page-content > div:nth-child(3) > div.pad-all > div > button
  • 我收到此错误:NoSuchElementException: 消息:没有这样的元素:无法找到元素:{"method":"css selector","selector":"html body.nifty-ready div#container .effect div.boxed div#content-container.frame-container div.page-content div.panel div.pad-all"}(会话信息:chrome=86.0.4240.193)
  • 啊,如果它是一个下拉菜单,那么您可能需要等待一段时间才能找到嵌套元素,以便它们在 DOM 中可用。在单击下拉菜单后并在找到嵌套元素之前使用 time.sleep(2) 或 selenium EC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2018-10-31
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多