如何在不使用Selenium(Python)知道id或xpath的情况下按下网页上的多个按钮

时间:2019-05-11 11:25:24

标签: python selenium selenium-webdriver

我正在尝试自动登录和取消关注Depop网站上的人员。单击所有“取消关注”按钮时遇到麻烦。每个按钮都有不同的ID和Class,它们之间的唯一相似之处是此HTML代码:

<span> Following <span>

是否可以用此HTMl代码单击每个按钮?

我已经尝试过找到所有按钮的XPath,但是由于它们太多,因此很难找到每个按钮的XPath。我也试图找到跟随按钮的类,但是它们都是不同的。 css选择器中没有相似之处。

我试图做这样的事情,但是没有成功。

driver.get_attribute('<span> Following </span>').click()

为获得最佳结果,程序将浏览该页面,而不关注当前正在关注的每个人。

1 个答案:

答案 0 :(得分:0)

这是逻辑。

unfollows = driver.find_elements_by_xpath("//span[normalize-space(.)='Following']")
for btn in unfollows:
    btn.click()

如果使用上述方法遇到staleElement异常,则必须遵循以下方法。

while len(driver.find_elements_by_xpath("//span[normalize-space(.)='Following']"))>0:
    btn = driver.find_element_by_xpath("(//span[normalize-space(.)='Following'])[1]")
    btn.location_once_scrolled_into_view
    driver.execute_script("arguments[0].click();",btn)