从同一个类名获取多个按钮(selenium python)

时间:2017-01-13 23:09:47

标签: python selenium

我正在抓fb学习。

我正在编写以下行,但无法找到页面上的按钮。 (我不想使用href,因为不同的fb帖子的href会有所不同)

likeButton = driver.wait.until(EC.presence_of_element_located(
            (By.CLASS_NAME, "_2e4w nowrap")))
likeButton[0].click #this code is never reached

我也试过这个

likeButton = driver.wait.until(EC.presence_of_element_located(
            (By.CSS_SELECTOR, "._2e4w.nowrap")))

2 个答案:

答案 0 :(得分:0)

我假设您正在废弃HTML,所以请告诉我这是不是真的。

HTML中的类名称并不是唯一的。 HTML中的多个对象可能具有相同的类名,但通常多个内容不会具有相同的apostrophe-video-widgetsid通常是唯一的。

id

而不是

<thing id="some_id"></thing>

我会使用类来缩小搜索范围,然后使用<thing class="some_class"></thing> 进行选择。

此外,如果有选择类的css选择器,它们看起来像这样:

id

如果它们基于.some_class { //some css color: example_color; } ,则它们看起来像这样

id

编辑:

我也猜到它正在寻找一个单一的名字。我也会尝试这样的事情:

#some_id {
    //some css
    color: example_color;
}

如果你想要likeButton = driver.wait.until(EC.presence_of_element_located( (By.CLASS_NAME, "_2e4w"))) ,可能还有一种选择多个类名的方法。我不希望nowrap工作。

答案 1 :(得分:0)

字符串输入应该是“_2e4w”而不是“_2e4w nowrap”这些是两个单独的类

要获取按钮列表“需要使用所有元素的存在”

likeButton = driver.wait.until(EC.presence_of_all_elements_located(
        (By.CLASS_NAME, "_2e4w")))