我正在尝试使用selenium为kuku kube游戏编写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中的newbe,所以请帮我找出如何获取具有唯一属性的对象索引。
UPD 以下是 styles 列表的示例:
[
'background-color: rgb(88, 83, 124);',
'background-color: rgb(193, 188, 229);',
'background-color: rgb(88, 83, 124);',
'background-color: rgb(88, 83, 124);'
]
问题仍然相同:如何获取唯一元素的索引?
UPD2 好的,我更新了我的算法。它好一点,但是......嗯,仍然相信那可以更快:)
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)
答案 0 :(得分:0)
天真的循环中断版本,完全是Pythonic - 它简洁,清晰,高效。
脚本行为缓慢的原因可能是selenium web driver
。