Selenium迭代通过Python元素组

2024-10-01 02:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图遍历由匹配类名返回的许多元素,这些元素存储在数组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()'d,并且程序在第一次单击后终止。为什么被迭代的索引不递增会有什么问题?在

资源:image-红色显示正在迭代的内容,蓝色表示每个按钮所处的位置


Tags: divbrowser元素bylenbuttonelementfind
3条回答

以列表形式查找所有css_选择器元素,然后迭代该列表以执行操作。click()

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

users = browser.find_elements_by_class_name('wo9IH')返回也可以被转换的selenium.webdriver.remote.webelement.WebElement实例的列表。在

在迭代的实现中,忽略了关于列表中项目的上述事实,通过从WebDriver实例(browser.find_element_by_css_selector)横切页面源来搜索整个页面。在

下面是如何在匹配的WebElements中获取按钮:

for user_web_element in users:
    # The next line given that there is only a single <button> 
    # in the screenshot for the matched WebElements.
    user_button = user_web_element.find_element_by_tag_name('button')
    user_button.click()

试试这个,
您可以直接生成buttons数组,而不是li数组,
Go click all按钮包含的文本为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

相关问题 更多 >