代码之家  ›  专栏  ›  技术社区  ›  DeduciveR

试图检测并用rselenium填充表单

  •  2
  • DeduciveR  · 技术社区  · 8 年前

    我在自己的网站上有一个嵌入的表单,我想使用rselenium进行填充和发送。

    我似乎无法将这些元素作为第一步来检测。很明显,我想在那时进行填充和发送。

    表单代码为:

    <div id="form">
    
                                <form accept-charset="utf-8" method="POST" novalidate="">
                                <div class="form-group"><label for="form_Name" class="control-label">Full name<sup>*</sup></label><input required="" pattern="^***+(.****" class="form-control" title="Full name" id="form_Name" type="text" name="form_Name"></div>
                                <div class="form-group"><label for="form_Email" class="control-label">Email address<sup>*</sup></label><input required="" class="form-control" title="Email address" id="form_Email" type="email" name="form_Email"></div>
                                <div class="form-group"><label for="form_Company" class="control-label">Company name<sup>*</sup></label><input class="form-control" title="Company name" required="" id="form_Company" type="text" name="form_Company"></div>
                                <div class="form-group"><label for="custom_Message" class="control-label">Message</label><textarea class="form-control" title="Message" id="custom_Message" name="custom_Message"></textarea></div>
                
                <div><input class="btn-large btn-inverse btn" type="submit" value="Submit"></div>
    
                </form>
            </div>

    我尝试过所有的选择:

    remDr$findElement()
    

    但同样的错误是:

    Error:   Summary: NoSuchElement
    Detail: An element could not be located on the page using the given search parameters.
    

    服务器肯定在运行-我已经成功地截取了站点页面的屏幕截图。

    有人能帮我检测表单元素,这样我就可以填充所有元素并发送吗?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Weihuang Wong    8 年前

    findElement()

    html <- '<div id="form">
      <form accept-charset="utf-8" method="POST" novalidate="">
        <div class="form-group"><label for="form_Name" class="control-label">Full name<sup>*</sup></label><input required="" pattern="^***+(.****" class="form-control" title="Full name" id="form_Name" type="text" name="form_Name"></div>
        <div class="form-group"><label for="form_Email" class="control-label">Email address<sup>*</sup></label><input required="" class="form-control" title="Email address" id="form_Email" type="email" name="form_Email"></div>
        <div class="form-group"><label for="form_Company" class="control-label">Company name<sup>*</sup></label><input class="form-control" title="Company name" required="" id="form_Company" type="text" name="form_Company"></div>
        <div class="form-group"><label for="custom_Message" class="control-label">Message</label><textarea class="form-control" title="Message" id="custom_Message" name="custom_Message"></textarea></div>           
        <div><input class="btn-large btn-inverse btn" type="submit" value="Submit"></div>
      </form>
    </div>
    '
    tmp <- tempfile(fileext = ".html")
    cat(html, file = tmp)
    

    RSelenium

    library(RSelenium)
    rD <- rsDriver()
    remDr <- rD[["client"]]
    remDr$navigate(paste0("file://", tmp))
    # Find and populate the field
    webElem <- remDr$findElement(using = "id", "form_Name")
    webElem$sendKeysToElement(list("Foo Bar"))
    # Close browser
    remDr$close()
    

    https://ropensci.org/tutorials/rselenium_tutorial/