【问题标题】:Cannot Click a button With Selenium无法单击带有 Selenium 的按钮
【发布时间】:2017-08-11 01:24:19
【问题描述】:

我正在尝试自动化单击某些按钮的过程。虽然我已经走了很远,只有 1 个按钮无法工作。我正在使用带有硒的python。所以我只想点击这个按钮,但我做不到。下面是我尝试使用 css select 和 xpath 的代码,但我仍然无法单击它,我收到错误路径未找到。

这是我要点击的按钮

<button class="yt-uix-button yt-uix-button-size-default yt-uix-button-primary  create-channel-submit" type="button" onclick=";return false;" data-channel-creation-token="GhaqucG9ARAKDi9teV92aWRlb3M_bz1VKAQ%3D"><span class="yt-uix-button-content">CREATE CHANNEL</span></button>

我已经尝试了以下 2 个代码,但它们都不起作用。

 driver.find_element_by_xpath("//button[@class='button.yt-uix-button yt-uix-button-size-default yt-uix-button-primary  create-channel-submit']").click()

driver.find_element_by_css_selector('button.yt-uix-button yt-uix-button-size-default yt-uix-button-primary  create-channel-submit').click()

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    让我们回顾一下你的尝试:

    • driver.find_element_by_xpath("//button[@class='button.yt-uix-button yt-uix-button-size-default yt-uix-button-primary create-channel-submit']").click()

      这个不起作用,因为您试图将 CSS 选择器放入 @class 属性值检查中。你的意思是:

      //button[@class='yt-uix-button yt-uix-button-size-default yt-uix-button-primary  create-channel-submit']
      
    • driver.find_element_by_css_selector('button.yt-uix-button yt-uix-button-size-default yt-uix-button-primary create-channel-submit').click()

      这个不起作用,因为您没有在 CSS 选择器中正确指定多个类,类需要用点分隔:

      button.yt-uix-button.yt-uix-button-size-default.yt-uix-button-primary.create-channel-submit
      

    请注意,一个更简单的选择器应该可以完成这项工作 - 您不必在 CSS 选择器中指定所有类 - 选择一个更加面向数据且唯一的选择器,在这种情况下,我认为这应该是相当可靠和可读的:

    driver.find_element_by_css_selector('button.create-channel-submit').click()
    

    【讨论】:

      【解决方案2】:

      假设您要点击按钮CREATE CHANNEL,您需要考虑&lt;span&gt; 标签在&lt;button&gt; 标签内的存在。您可以使用以下代码行:

      driver.find_element_by_xpath("//button[@class='yt-uix-button yt-uix-button-size-default yt-uix-button-primary  create-channel-submit']/span[class='yt-uix-button-content']").click()
      

      【讨论】:

        【解决方案3】:

        您可以使用下一个方法单击您的元素:

        driver.find_element_by_xpath("//span[(@class='yt-uix-button-content') and contains(text(), 'CREATE CHANNEL')]/..").click()
        

        【讨论】:

          【解决方案4】:

          你可以试试这个代码

          driver.find_element_by_css_selector('button.yt-uix-button.yt-uix-button-size-default.yt-uix-button-primary.create-channel-submit').click();
          

          【讨论】:

            【解决方案5】:

            您可以尝试使用 by_class_name。您正在使用 xpath 和 css 来查找类名

            driver.find_element_by_class_name('yt-uix-button yt-uix-button-size-default yt-uix-button-primary  create-channel-submit')
            

            【讨论】:

            • 你不能在那个方法中使用复合类名。
            猜你喜欢
            • 1970-01-01
            • 2021-08-13
            • 2015-09-26
            • 1970-01-01
            • 2019-09-04
            • 2022-11-16
            • 1970-01-01
            • 1970-01-01
            • 2019-02-27
            相关资源
            最近更新 更多