无法点击带有Selenium的按钮

时间:2017-08-07 18:23:09

标签: python selenium xpath

我正在尝试自动点击某些按钮的过程。虽然我走得很远,只有一个按钮无法工作。我正在使用python和selenium。所以我只想点击这个按钮,但我无法这样做。下面是我用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>

我尝试过以下两个代码,但都没有。

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

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

假设您要点击 CREATE CHANNEL 按钮,您需要考虑<span>标记内是否存在<button>标记。您可以使用以下代码行:

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

答案 2 :(得分:0)

您可以尝试此代码

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:-2)

你可以尝试使用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')