Selenium-遍历元素组-Python

时间:2018-11-01 04:42:01

标签: python selenium

我试图遍历匹配的类名返回的许多元素,这些类名已存储在数组users中。 print(len(users))输出为12,这对于应该返回多少应该是正确的。这是我的代码:

def follow():
    time.sleep(2)
    # iterate here
    users = []
    users = browser.find_elements_by_class_name('wo9IH')
    print(len(users))
    for user in users:
        user_button = browser.find_element_by_css_selector('li.wo9IH div.Pkbci').click()
        #user_button = browser.find_element_by_xpath('//div[@class="Pkbci"]/button').click()

但是,目前仅索引[0]被.click()填充,并且该程序在第一次单击后终止。为什么要迭代的索引没有递增,这将会是什么问题?

资源: image-红色表示正在迭代的内容,蓝色表示每个按钮都被.click()

3 个答案:

答案 0 :(得分:0)

尝试一下,
您可以直接制作buttons数组而不是li数组,
转到单击所有按钮,其中包含文本为Follow
简单

browser.maximize_window()
users = []
    users = browser.find_elements_by_xpath('*//button[text()='Follow']')
print(len(users))  # check it must be 12

for user in users:
        browser.execute_script("arguments[0].click()", user)
        # user.click()  Go click all buttons

答案 1 :(得分:0)

找到所有css_selector元素作为列表,然后迭代该列表以执行.click()

yourList = browser.find_elements_by_css_selector('w0o9IH div.Pkbci')

答案 2 :(得分:0)

users = browser.find_elements_by_class_name('wo9IH')返回selenium.webdriver.remote.webelement.WebElement个实例的列表,这些实例也可以是横向的。

在迭代的实现中,忽略了有关列表中项目的上述事实,并且通过遍历WebDriver实例( ie { {1}}。

以下是在匹配的browser.find_element_by_css_selector中获取按钮的方法:

WebElement