获取具有唯一属性的对象的索引

2024-03-28 19:22:31 发布

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

我正在尝试使用selenium为kukube游戏编写bot。这是我的密码

from selenium import webdriver
driver = webdriver.Firefox()

def clickOnValidElement(driver):
    elements = driver.find_elements_by_css_selector("#box span")
    styles = [element.get_attribute("style") for element in elements]
    for element in elements:
        if (styles.count(element.get_attribute("style")) == 1):
            element.click()
            break
    clickOnValidElement(driver)

driver.get("http://106.186.25.143/kuku-kube/en-3/")
driver.find_element_by_css_selector('.play-btn').click()
clickOnValidElement(driver)

但在我看来这不是一个有效的算法。我认为还有另一种方法,不是逐个迭代所有列表。我是python新手,所以请帮我找出如何获得具有唯一属性的对象的索引。你知道吗

升级版 以下是样式列表的示例:

[
    'background-color: rgb(88, 83, 124);', 
    'background-color: rgb(193, 188, 229);', 
    'background-color: rgb(88, 83, 124);', 
    'background-color: rgb(88, 83, 124);'
]

问题还是一样的:如何得到唯一元素的索引?你知道吗

升级2 好的,我更新了算法。好一点,但是。。。嗯,还是相信那会更快:)

from selenium import webdriver
driver = webdriver.Firefox()

def clickOnValidElement(driver):
    try:
        elements = driver.find_elements_by_css_selector("#box span")
        styles = [element.get_attribute("style") for element in elements]
        unique = list(set(styles))
        for style in unique:
            if (styles.count(style) == 1):
                elements[styles.index(style)].click()
                break
        clickOnValidElement(driver)
    except Exception:
        print("Time is out.")

driver.get("http://106.186.25.143/kuku-kube/en-3/")
driver.find_element_by_css_selector('.play-btn').click()
clickOnValidElement(driver)

Tags: inforgetbystyledriverelementselement
1条回答
网友
1楼 · 发布于 2024-03-28 19:22:31

天真的循环中断版本,是完美的Python它的简洁,清晰,高效。你知道吗

脚本运行缓慢的原因可能是selenium web driver。你知道吗

相关问题 更多 >