繁体   English   中英

为什么我的 selenium 脚本在我不在正在运行的浏览器中观看时不能正常工作,但当我正常工作时?

[英]Why doesn't my selenium script work properly when im not watching in my running browser but when i am it works fine?

我编写了一个脚本来购买一件物品,整个购买鞋子的过程需要 24 秒,但我知道它可能只有 5 秒。 我认为如果我无头运行它会更快完成,因为我搜索了它并且许多网站都这么说。 我使用远程调试 chrome session 在终端中设置: Google\ Chrome --remote-debugging-port=4813 --user-data-dir="~/ChromeProfile” 。如果我运行它并且我的脚本工作正常然后立即切换到正在运行的 Chrome window 但是如果我运行它并且不切换到浏览器我收到错误: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@role='presentation'][.//span[.='50.5']]”} . 我从: driver.get('url')开始,然后: driver.implicitly_wait(3) driver.find_element(By.XPATH, '//*[@id="picker-trigger"]').click() print('Showed the menu')但我不明白的是,如果脚本在没有我在浏览器本身中观看的情况下运行,它说它点击了选择器触发器,但是当我 go 到浏览器时,菜单没有展开. 然后给了我错误:无法定位元素。 对于下一行: driver.implicitly_wait(3) driver.find_element(By.XPATH, f"//div[@role='presentation'][.//span[.='{sizee}']]").click() print('Selected the size')我不明白为什么当我不在浏览器中观看时它不会展开菜单但是当我在它工作时。 此外,如果我使用无头选项运行它,它甚至不会打印“显示菜单”,这就是我一直试图弄清楚的。 所以我的问题是,为什么 click() 不点击菜单,所以当我不看它运行时它会展开? 最后我试图无头运行这个脚本,所以它会更快。 这些是我的 chrome_options: chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:4813") chrome_options.add_argument('window-size=1920x1080') driver = webdriver.Chrome(options=chrome_options)网站链接: https://www.zalando.nl/jordan-air-jordan-1-mid-sneakers-hoog-joc12n001-a18.html

提前致谢

是的,调试这种行为非常令人沮丧!

一种可能性...您的选择器中是否存在印刷错误? '{sizee}'应该是'{size}'吗?

我还建议您使用WebDriverWait来等待您的元素真正知道它们是否存在。 如果您超时,那么您就知道它们没有显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM