【问题标题】:'list' object has no attribute 'click''list' 对象没有属性 'click'
【发布时间】:2020-08-09 23:01:19
【问题描述】:

我正在尝试使用“x”按钮关闭模式,但出现此错误'list' object has no attribute 'click',因此我寻找其他答案,他们说使用 close_button[0].click(),因为 find_by_element 存储了一个列出但仍然出现错误为IndexError: list index out of range 我需要帮助来关闭此模式

我的代码

close_button=browser.find_elements_by_xpath('//*[@id="prefix-overlay-header"]/button')
close_button[0].click()

我尝试访问和关闭的元素。

【问题讨论】:

    标签: python selenium automation


    【解决方案1】:

    我的 2c 使用 Expected Conditions(等待):

    from selenium import webdriver
    from selenium.webdriver.support import expected_conditions as ec
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    
    driver = webdriver.Firefox()
    wait = WebDriverWait(driver, 10)
    driver.maximize_window()
    driver.get('https://site.tld')
    
    el = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[text()="Close subscription dialog"]')))
    el.click()
    

    根据您的评论,您可能希望在“单击执行”之后使用以下代码并打开一个新选项卡:

    wait.until(EC.number_of_windows_to_be(2)) # wait for 2 tabs (windows) to be open
    driver.switch_to_window(driver.window_handles[1]) # switch to newly opened tab
    

    【讨论】:

    • 它实际上发生了,因为在上一页中,当我单击链接时,它会在新选项卡中打开,但控件仍在上一个选项卡中,因此无法找到关闭按钮,因为控件是在上一个标签仍然
    • 如果您在这张照片中看到,imgur.com/a/Zc9lInW 在第 7 个单元格中,当执行该单击时,它会在新选项卡中打开链接,但控件似乎仍在父窗口中这就是为什么,selenium 找不到关闭按钮
    • 如何再次切换回我的父窗口? @CONvid19
    • driver.switch_to_window(driver.window_handles[0]) - techbeamers.com/switch-between-windows-selenium-python
    【解决方案2】:

    这是因为你试图通过

    browser.find_elements_by path
    

    请注意,您可以看到元素。 Elements 是一个列表。它是复数 试试这个:

     browser.find_element_by_path
    

    然后使用closebutton.click()

    【讨论】:

    • 我收到此错误NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="prefix-overlay-header"]/button"} 我通过检查元素采用了 xpath,但仍然显示未找到元素
    • 尝试通过 class_name 或 css_selector 使用 find_element
    • 你能告诉我网站的名称吗
    • 我添加了另一个答案,请检查。它在你的网站上对我有用
    【解决方案3】:

    我找到了答案。由于有空间,您应该使用 css 选择器。重要的是积分(.)

    close_button = browser.find_element_by_css_selector('.prefix-overlay-close.prefix-overlay-action-later')
    close_button.click()
    

    它在您给定的网站上对我有用。请检查一次

    【讨论】:

    • 实际上,当我单击上一个选项卡上的链接时,它会在新选项卡中打开此页面,因此找不到该元素。有什么方法可以让我将控制权转移到这个新标签上?
    • 为什么你有 2 个标签
    • 当我点击转到数据在线链接时,它会自动在新标签中打开。没办法
    • 它不能与我展示的代码一起使用。你能显示错误吗
    猜你喜欢
    • 2012-06-28
    • 2018-12-20
    • 1970-01-01
    • 2022-07-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多