我找不到要单击的按钮元素

2024-04-29 12:46:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图点击“查看所有细节”按钮,从OpenTable中展开一家餐厅的细节,但我一直得到一个无元素的例外。Image of the wesbite

from selenium import webdriver

driver = webdriver.Chrome(
    '/Library/Python/2.7/site-packages/chromedriver')
url = "https://www.opentable.com/chicago-illinois-restaurant-listings"
driver.get(url)

element = driver.find_element_by_xpath(
    '//*[@id="search_results"]/div[2]/div[1]/div/div[2]/div[1]/a')
element.click()
driver.find_element_by_css_selector(
    '#overview-section > div:nth-child(4) > div.f9f46391 > button').click()

driver.quit()

Tags: fromdivurl元素bydriverseleniumelement
1条回答
网友
1楼 · 发布于 2024-04-29 12:46:22

每个结果链接都有target='_blank'属性。这意味着,如果要单击链接详细信息页面将在新选项卡中打开。要处理“新建”选项卡上的元素,应切换到该选项卡:

driver.get(url)
current = driver.current_window_handle
driver.find_element_by_css_selector('a.rest-row-name').click()
driver.switch_to.window([tab for tab in driver.window_handles if tab != current][0])

请注意,您还应等待按钮变为可单击:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC

wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[.="View all details"]'))).click()

相关问题 更多 >