[英]How to click on an element that is not a button using Selenium in Python
我是 web 抓取的新手,我正在尝试从这个房地产网站抓取数据以仅获取最近租用的地方。 为此,我需要从该下拉菜单中单击“租赁列表”。 我需要点击的图片
我遇到的问题是这不是按钮 class 所以使用 selenium.click() function 给我一个错误。 还有多个对象具有与“租赁列表”部分相同的 class 名称。
这是我的代码:
for page in range(0, total_pages + 1):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0 ; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
url = 'https://www.zoocasa.com/toronto-on-real-estate-for-rent?page=' + str(page)
driver.get(url)
elements = driver.find_elements(By.CLASS_NAME, "style_component__DR_Bs")
elements[6].click() #Leased listing is the 7th appearance of this class name
这里是该站点的 html (无论点击什么都有“style_active__eGbvT”):
<div class="style_component__DR_Bs">
::before
Active Listing
::after
</div>
<div class="style_component__DR_Bs style_active__eGbvT">
::before
Leased Listing
::after
</div>
<div class="style_component__DR_Bs">
::before
Expired Listing
::after
</div>
如果有人有任何建议,我将不胜感激,谢谢。
抱歉,由于我的声誉,无法发表评论 <50
我认为 selenium 允许点击div
但是,您需要在继续之前识别正确的div
和id
。
最简单的方法,你可以driver.find_elements_by_xpath
,它会返回一个列表,然后你需要检查每个项目的text
代码:
list_subcontent = driver.find_elements_by_xpath(".//div[@class='style_component__lT4sh style_theme-dark__rZF3s']//div[@class='style_component__DR_Bs ']")
for item in list_subcontent:
if item.text == 'Leased Listing':
item.click()
如果这有帮助,请帮助投票
这里有2个问题:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.get(url)
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class,'style_theme-dark')]//div[contains(text(),'Active Listings')]"))).click()
wait.until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class,'style_theme-dark')]//div[contains(text(),'Leased Listing')]"))).click()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.