使用Python+Selenium点击HTML表格最后一行报错求助
解决Selenium点击表格最后一行的问题
错误原因分析
你写的代码里,By.CSS_SELECTOR和By.XPATH的用法完全错误——它们是常量字符串,不是可调用的函数,不能加括号传参,正确用法是作为find_element方法的第一个参数,选择器表达式作为第二个参数。
修正后的代码
方法一:CSS选择器
如果要定位表格最后一行并点击,或者点击该行内的目标单元格,代码如下:
# 定位表格最后一行并点击 last_row = driver.find_element(By.CSS_SELECTOR, "table tbody tr:last-of-type") last_row.click() # 定位该行内的目标td(匹配你截图里的元素类名) last_target_td = driver.find_element(By.CSS_SELECTOR, "table tbody tr:last-of-type td.phone-leftinline.yui-dt6-col-Type.yui-dt-col-Type.yui-dt-first") last_target_td.click()
注意:CSS选择器中多个类名需要用.连接,不能用空格(空格代表后代选择器,会导致定位范围错误)。
方法二:XPath定位
修正XPATH的参数传递方式,代码如下:
# 定位表格最后一行并点击 last_row = driver.find_element(By.XPATH, "(//table[1]/tbody/tr)[last()]") last_row.click() # 定位该行内的目标td last_target_td = driver.find_element(By.XPATH, "(//table[1]/tbody/tr)[last()]/td[contains(@class, 'phone-leftinline') and contains(@class, 'yui-dt6-col-Type')]") last_target_td.click()
额外优化建议
为避免元素未加载完成导致的定位失败,建议添加显式等待:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待最后一行可点击后再操作 last_row = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "(//table[1]/tbody/tr)[last()]")) ) last_row.click()
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

