【问题标题】:I can't find the button element to click on it我找不到按钮元素来点击它
【发布时间】:2018-11-11 16:34:54
【问题描述】:

我正在尝试单击“查看所有详细信息”按钮以从 OpenTable 展开餐厅的详细信息,但我不断收到无元素异常。

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()

【问题讨论】:

  • 你可以试试driver.find_elements_by_class_name("_7f28dfbb _2c55c63f a8e8f9b4 _06bf3736")[1].click();

标签: python selenium web web-scraping


【解决方案1】:

每个结果链接都有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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2020-06-25
    • 2019-05-23
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    相关资源
    最近更新 更多