首页 > 解决方案 > Python Selenium - 如何单击不是按钮的元素

问题描述

我在 python 中使用 selenium 并尝试单击不是按钮类的元素。我正在使用 Google Chrome 作为我的浏览器/网络驱动程序

这是我的代码:

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome(executable_path="/Users/ep9k/Desktop/SeleniumTest/drivers/chromedriver")

driver.get('http://tax.watgov.org/WataugaNC/search/commonsearch.aspx?mode=address')
driver.find_element_by_name('btAgree').click()             #clicks 'Agree' button to agree to site's terms                                            

driver.find_element_by_name('inpNumber').send_keys('190')
driver.find_element_by_name('inpStreet').send_keys('ELI HARTLEY')
driver.find_element_by_name('btSearch').click()

这将我带到此页面: 在此处输入图像描述

我可以解析结果 HTML(例如 Beautiful Soup),但我想点击它们。如果我检查第一行元素,我发现它保存在一个 div 元素中,样式为“margin-left:3px;”。

但这不是按钮元素,所以正常的 click() 函数不起作用。有没有办法点击这个?例如,如果我单击第一行结果,我会被带到此页面,其中包含更多信息(这是我真正想要的):

在此处输入图像描述

标签: pythonhtmlseleniumselenium-webdriverselenium-chromedriver

解决方案


该元素不需要是可点击的按钮。

运行您的代码后,我添加了:

results = driver.find_elements_by_class_name('SearchResults')
first_result = results[0]
first_result.click()

它对我来说非常好。

很可能您尝试单击一些不同的元素,这就是它不起作用的原因

编辑:更准确地说,很可能您尝试单击<tr>标签内的 div 元素。虽然<tr>标签包含javascript:selectSearchRow('../Datalets/Datalet.aspx?sIndex=1&idx=1')所以你的脚本应该点击这个标签而不是<div>


推荐阅读