首页 > 解决方案 > 在页面上定位元素

问题描述

我正在尝试在页面上找到一个元素并且遇到了麻烦。不确定框架/iframe 是否是问题所在。我已经尝试过 xpath 和其他定位条件,但我不断收到 No such element 消息。这是网页(http://www.ghin.com/lookup.aspx

正如我所说,我尝试使用 xpath、css_name 和其他标准进行定位。这是 HTML 的相关部分(必须删除前导/尾随 <> 字符才能使其可见(不知道为什么)

<td class="ClubGridHandicapIndex" style="width: 118px;" valign="middle" align="center">13.8</td>

我希望能够抓取该元素中的值(在所示示例中为 13.8)

这是我为这个元素获得的 xpath(使用 firefox):

/html/body/form/div[3]/div/div[1]/div[2]/div[3]/div/div[2]/table/tbody/tr[1]/td[2]

这是我得到的 CSS 选择器:.ClubGridSelectedRow > td:nth-child(2)

这是我尝试过的代码(旧的尝试已被注释掉):

br.switch_to.frame(br.find_element_by_tag_name("iframe"))
br.find_element_by_xpath('//*[@id="ctl00_bodyMP_grdClubs"]/tbody/tr[1]/td[2]')
br.find_element_by_class("/html/body/form/div[3]/div/div[1]/div[2]/div[3]/div/div[2]/table/tbody/tr[1]/td[2]")

handicap_element = br.find_element_by_css_selector("#ctl00_bodyMP_grdClubs > tbody > tr.ClubGridSelectedRow > td.ClubGridHandicapIndex")

handicap_detail = br.find_element_by_xpath("/html/body/form/div[3]/div/div[1]/d1iv[2]/div[3]/div/div[2]/table/tbody/tr[1]/td[2]")

handicap_detail = br.find_element_by_xpath("//td[@class='ClubGridHandicapIndex']")

handicap_detail = br.find_element_by_css_selector("#ctl00_bodyMP_grdClubs > tbody > tr.ClubGridSelectedRow > td.ClubGridHandicapIndex")

任何和所有的想法都值得赞赏

我应该能够轻松找到元素。我在另一个项目上使用了很多硒,并取得了巨大的成功。然而,这个网站上的 HTML 有一些我不熟悉的东西。

提前感谢您的帮助。

标签: pythonselenium-webdriver

解决方案


以下应该工作

content = driver.find_element_by_class_name('ClubGridHandicapIndex')

content = driver.find_element_by_css_selector('td.ClubGridHandicapIndex')

https://selenium-python.readthedocs.io/locating-elements.html


推荐阅读