[英]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.