F#机盖:未拾取某些页面元素

问题描述 投票:0回答:2

我是F#Canopy的新手,正在测试将日期输入到https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm的输入框中。当运行下面的Canopy代码时,我收到一个“用户未处理”异常,指出“ canopy.types.ConaopyElementNotFoundException:'找不到元素id = priceDate.month'”,尽管该元素可以在页面源以及页面中看到适用于Chrome的Selenium Page Object Generator和Selenium Object Finder扩展。似乎对于某些页面对象,Canopy不会选择这些元素...或者我丢失了一些东西。有什么想法吗?

open System
open canopy
open canopy.runner.classic
open canopy.configuration
open canopy.classic

[<EntryPoint>]
let main argv =
    canopy.configuration.chromeDir <- System.AppContext.BaseDirectory

    //start an instance of chrome
    start chrome

    "testing UST prices" &&& fun _ ->
        //this is an F# function body, it's whitespace enforced

        //go to url
        url "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm"

        click "id=priceDate.month"
        "id=priceDate.month" << "3"
        click "id=priceDate.day"
        "id=priceDate.day" << "31"
        click "id=priceDate.year"
        "id=PriceDate.year" << "2020"

        click "Show Prices"
        click "CSV Format"


    //run all tests
    run()

    printfn "press [enter] to exit"
    System.Console.ReadLine() |> ignore

    quit()

    0
f# canopy canopy-web-testing
2个回答
0
投票

看起来您写的XPath错误。

这将起作用

 click "//*[@id='priceDate.month']"
        "//*[@id='priceDate.month']" << "3"
 click "//*[@id='priceDate.day']"
        "//*[@id='priceDate.day']" << "31"
 click "//*[@id='priceDate.year']"
        "//*[@id='priceDate.year']" << "2020"

找到正确的XPath的解决方案是使用Chrome中的开发者工具。右键单击元素,然后复制->复制XPath


0
投票

硒(并因此冠层)的支持CSS

click "#elemId"

XPath

click "//*[@id='elemId']"

选择器。

© www.soinside.com 2019 - 2024. All rights reserved.