繁体   English   中英

无法使用硒单击按钮

[英]Cannot Click a button With Selenium

我正在尝试自动化单击某些按钮的过程。 虽然我走得很远,但只有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()

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

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

假设您要单击按钮CREATE CHANNEL ,则需要考虑<button>标记中是否存在<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()

您可以尝试此代码

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM