我正在尝试自动点击某些按钮的过程。虽然我走得很远,只有一个按钮无法工作。我正在使用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()
答案 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')