python - 随机点击无限量的所有选项卡

标签 python css selenium xpath selenium-webdriver

我正在尝试随机单击此 page 上所有未打开的选项卡(元素) .

但不幸的是,下面的方法似乎可行,使用这种方法似乎无法单击所有元素。我假设出于某种原因它不喜欢索引中的索引(或者没有正确加载所有索引)。添加 while True: 可以解决这个问题,但我不确定如何随机化无限量。有什么想法吗?

options = driver.find_elements_by_xpath('//*[@class="KambiBC-mod-event-group-header__event-count"]')

indexes = [index for index in range(len(options))]
shuffle(indexes)
for index in indexes:
    time.sleep(1)
    clickMe = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,'(//*[@class="KambiBC-mod-event-group-header__event-count"])[%s]' % str(index + 1))))
    driver.execute_script("arguments[0].scrollIntoView();", clickMe)
    clickMe.click()
    time.sleep(1)

添加 while True:

while True:
    time.sleep(0)
    #clickMe = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,'(//*[@class="KambiBC-mod-event-group-header__event-count"])[%s]' % str(index + 1))))
    clickMe = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '(//*[@class="KambiBC-mod-event-group-header__event-count"])[%s]' % str(index + 1))))
    driver.execute_script("arguments[0].scrollIntoView();", clickMe)
    clickMe.click()
    time.sleep(0)

最佳答案

不是所有的选项都同时出现,而是一个接一个的添加。

您需要等到所有选项都可用。

试试下面的代码:

def get_options_length():
    list_length = len(wait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//*[@class="KambiBC-collapsible-header KambiBC-mod-event-group-header"]'))))
    while True:
        time.sleep(1)
        if list_length == len(driver.find_elements_by_xpath('//*[@class="KambiBC-collapsible-header KambiBC-mod-event-group-header"]')):
            break
        else:
            list_length = len(driver.find_elements_by_xpath('//*[@class="KambiBC-collapsible-header KambiBC-mod-event-group-header"]'))
    return list_length

indexes = [index for index in range(get_options_length())]
shuffle(indexes)
for index in indexes:
    time.sleep(1)
    clickMe = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,'(//*[@class="KambiBC-collapsible-header KambiBC-mod-event-group-header"])[%s]' % str(index + 1))))
    clickMe = clickMe.find_element_by_xpath('.//span')
    driver.execute_script("arguments[0].scrollIntoView();", clickMe)
    clickMe.click()

关于python - 随机点击无限量的所有选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47090423/

相关文章:

javascript - Onclick CSS 替代方案

java - Selenium java调用javascript函数

Python字典切换通过其他函数而不仅仅是调用的函数

python - 绘制截断正态分布

python - "The indices parameter is deprecated and will be removed (assumed True) in 0.17"是什么意思?

html - 如何使网页与浏览器大小保持一致?

html - CakePHP - 在多个页面上添加一个 "back to top"按钮

python - Django-Guardian - 限制组对类的访问

java - 在 TestNG 中运行多个类

python - 如何使用 python3 安装 selenium?