51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1075|回复: 3
打印 上一主题 下一主题

python selenium webDriverWait 在多线程情况下失效一问

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2022-5-11 10:54:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    各位好我有个问题想要询问
    我使用python selenium thread模拟10个等同开启十个浏览页(webDriver)
    但是发现在这个代码下
    我第一个webDriver按下了按钮1
    但是第二个第三个页面还没有点击按钮1
    但是好像由于第一个通过了按钮1的那段代码
    后面二,三个webDriver都会跳过点击按钮1这步直接到检查按钮2元素的地方(webDriverWait)
    報告錯誤
    消息:沒有這樣的元素:無法找到元素:{"method":"xpath","selector":"//*[/div/div[2]/div[1]/div[6]/div"}
    大概就是因为第2,3个页面还没点击按钮跳转到下一页所以找不到元素
    所以导致他TimeOut报错跳出
    请问我该如何处理这个问题
    麻烦了 感谢
    1. from datetime import datetime
    2. from selenium import webdriver
    3. from selenium.webdriver.support.wait import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. from selenium.webdriver.common.by import By
    6. from selenium.webdriver.chrome.service import Service
    7. from selenium.webdriver.chrome.options import Options
    8. import threading

    9. def selenium_mult():
    10.     chrome_options = Options()
    11.     chrome_options.add_argument("--headless")
    12.     ser=Service('./chromedriver')
    13.     driver = webdriver.Chrome(service = ser,options=chrome_options)
    14.     driver.set_window_size(540,480)
    15.     driver.get('https:/website')

    16.     WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="btn"]/div/div[3]/button[1]')))
    17.     driver.find_element(By.XPATH, '//*[@id="btn"]/div/div[3]/button[1]').click()  #click button 1
    18.     Ftime = datetime.now()

    19.     WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="btn"]/div/div[2]/div[1]/div[6]/div')))
    20.     driver.find_element(By.XPATH, '//*[@id="btn"]/div/div[2]/div[1]/div[6]/div').click() #click button 2

    21. if __name__ == '__main__':
    22.     for i in range(10):
    23.         t = threading.Thread(target=selenium_mult)
    24.         t.start()
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:15
  • 签到天数: 756 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2022-5-12 11:04:35 | 只看该作者
    等大神
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    3 天前
  • 签到天数: 1521 天

    连续签到: 5 天

    [LV.Master]测试大本营

    3#
    发表于 2022-5-12 11:48:58 | 只看该作者
    分线程做
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 07:50
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    4#
    发表于 2022-5-12 16:22:50 | 只看该作者
    线程应用有问题吧
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 04:46 , Processed in 0.066651 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表