gpt4 book ai didi

selenium - 通过 Haskell 和 webdriver 重用现有的 Selenium session

转载 作者:行者123 更新时间:2023-12-01 10:30:57 26 4
gpt4 key购买 nike

尝试在 REPL session 中使用来自 Haskell 的 Selenium(带有 webdriver 包)。首先我运行这个:

startup :: IO ()
startup = do
runSession chromeConfig $ do
openPage "http://www.google.com"

新的 Chrome 浏览器打开,导航到 Google,将其留在那里,启动 功能完成,Chrome 浏览器仍然打开(这正是我需要的)。

现在我想编写简单的脚本来与 Google 页面交互并从 REPL 运行它们。如何重复使用已打开的现有 session /Chrome 浏览器?

如果我再次尝试使用 runSession,它会打开一个新的浏览器(如文档所述)。如果我尝试使用 runWD,它需要一个 session 作为第一个参数,我还没有。

有一个 sessions::WebDriver wd => wd [(SessionId, Capabilities)] 值,但要使用它,我必须在 runWD 内,这需要 session !此外,它返回一个 SessionID,但我没有看到任何将其转换为 WDSession 的函数。

我在这里兜圈子,感谢任何帮助。我不确定为什么这么复杂,是因为 Selenium 还是 Haskell?

最佳答案

WD monad 是 MonadIO 的一个实例,这意味着您可以使用 liftIO 将 WebDriver 操作与 IO 操作交织在一起.这允许您读取和写入控制台。这个想法是在对 runSession 的一次调用中完成所有操作。

main = runSession chromeConfig $ do
openPage "http://www.google.com"

liftIO $ putStrLn "Enter your search term"
searchTerm <- liftIO getLine

input <- findElem "#lst-ib"

sendKeys input searchTerm
submit input

关于selenium - 通过 Haskell 和 webdriver 重用现有的 Selenium session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42446192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com