【问题标题】:Finding element location in Shiny在 Shiny 中查找元素位置
【发布时间】:2018-11-26 22:21:50
【问题描述】:

我有一个 Shiny 应用程序,其表大小取决于输入,我正在尝试使用 RSelenium 测试该应用程序。我想使用 XPath 语法查找元素位置。使用精确节点查找一个元素可以正常工作,但是,查找多个元素根本不会返回任何结果。我的 Shiny 应用无法共享,但在 RStudio 托管的 Shiny 应用上也会出现相同的结果。

library(RSelenium)

rd <- rsDriver()
r <- rd$client
r$navigate('https://shiny.rstudio.com/gallery/datatables-demo.html')
r$switchToFrame(r$findElements("css selector", "iframe")[[1]])


e <- r$findElements('xpath', "//*[@id='DataTables_Table_0']/tbody/tr[1]/td[3]")
e[[1]]$getElementText()
e[[1]]$getElementLocation()[c('x', 'y')]
# Works as expected 


# Find all elements - does not find any elements

e_all <- r$findElements('xpath', "//*[@id='DataTables_Table_0']/tbody/tr[*]/td[*]")

【问题讨论】:

    标签: r xpath shiny rselenium web-testing


    【解决方案1】:

    在第一个 XPath 中,您选择第三个 td 元素,它是tbody 下第一个 tr 元素的子元素。

    在第二个 XPath 中,您正在选择 td 元素(仅当它具有子元素时),它是具有子元素的 tr 元素的子元素(因为您要选择td 子元素)。

    如果没有一些示例数据很难判断,但我猜td 元素都没有任何子元素,因此它没有选择任何东西。

    调整 XPath 以删除两个谓词过滤器:

    //*[@id='DataTables_Table_0']/tbody/tr/td
    

    这应该从该表的所有行中选择所有列。

    如果选择的列过多并且您需要对其进行限制,请提供一些示例内容并描述您想要选择或排除的内容,我们可以帮助您添加适当的谓词过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 2013-04-10
      相关资源
      最近更新 更多