当前位置: 首页 > 知识库问答 >
问题:

红宝石硒xpath td css

鄢翰藻
2023-03-14

我正在使用Ruby和Selenium web驱动程序测试一个webapp。我无法检查显示网页中单元格的内容。我想要的是td中的IP。

<td class="multi_select_column"><input name="object_ids" type="checkbox"
value="adcf0467-2756-4c02-9edd-bb83c40b8685" /></td> 
<td class="sortable normal_column">Core</td>
<td class="sortable nowrap-col normal_column">r1-c4-b4</td>
<td class="sortable anchor normal_column"><a href="/horizon/admin/instances
/adcf0467-2756-4c02-9edd-bb83c40b8685/detail" class="">pg-gtmpg--675</a></td>
<td class="sortable normal_column">column_name</td><td class="sortable normal_column">
<tr 
    <ul>
      <li>172.25.1.12</li>
</ul>

我使用Firefox插件firepath获取IP的Xpath。它给出了“html/body/div[1]/div[2]/div[3]/form/table/tbody/tr[1]/td[6]/ul/li”,看起来是正确的。

但是我无法显示IP。这是我的测试代码;

#usr/bin/env ruby
#
# Sample Ruby script using the Selenium client API
#
require "rubygems"
require "selenium/client"
require "test/unit"
require "selenium/client"

begin
driver = Selenium::WebDriver.for(:remote, :url =>"http://dog.dog.jump.acme.com:4444/wd/hub")
driver.navigate.to "http://10.87.252.37/acme/auth/login/"
g_user_name = driver.find_element(:id, 'id_username')
g_user_name.send_keys("user")
g_user_name.submit

g_password = driver.find_element(:id, 'id_password')
g_password.send_keys("password")
g_password.submit

g_instance_1 = driver.find_element(:xpath, "html/body/div[1]/div[2]/div[3]/form/table/tbody/tr[1]    /td[4]/a") 
puts g_instance_1.text()   <- here, I see the can see text

g_instance_2 = driver.find_elements(:xpath, "html/body/div[1]/div[2]/div[3]/form/table/tbody/tr[1]  /td[6]/ul/li[1]")

把g_instance_2

 output is <Selenium::WebDriver::Element:0x000000023c1700

把g_instance_2.inspect

 output is :[#<Selenium::WebDriver::Element:0x22f3b7c6e7724d4a id="4">]

放置g\u instance\u 2。类输出:数组

g_instance_2.count输出:1

当td中没有/a时,它似乎不起作用。我已尝试放置g\u instance\u 2。文本,g\U实例2。text()和其他许多都没有成功。我一定错过了什么明显的东西,但我没有看到

Ruby 1.9.3p0 (2011-10-30修订版33570)[x86_64-linux]在Linuxubuntu 3.8.0-34-通用#49~精确1-Ubuntu

我决定使用css选择器而不是xpath尝试不同的apporach。

当我将以下css选择器插入FirePath窗口时,将选择所需的html部分。

g_instance_2 = driver.find_elements(:css, "table#instances tbody tr:nth-of-type(1) td:nth-of-type(6) ul li:nth-of-type(1)" )

问题与以前一样,我似乎无法访问g\u instance\u 2的内容

我试过了;

puts g_instance_2
g_instance_22 = [g_instance_2]
puts g_instance_22

两者都返回

#<Selenium::WebDriver::Element:0x000000028a6ba8>
#<Selenium::WebDriver::Element:0x000000028a6ba8>

如何检查从远程web服务器返回的值?

Python是更好的选择吗?

共有2个答案

颜修真
2023-03-14

问题是我没有正确访问返回的数组

puts g_instance_2[0].text()

适用于css和xpath

柯曦
2023-03-14

您尝试测试的HTML代码片段不是有效的HTML。可能值得为此提交一份bug报告。

使用给定的代码,以下CSS选择器检索

[href^="/horizon/admin/instances"]

转换为:具有“href”属性(以“/地平线/管理/实例”开头)的任何元素

对于XPATH,这是选择器

("//a[contains(@href,'/horizon/admin/instances')]")

同样的翻译只是一种更丑陋的语法。

 类似资料:
  • 在我的docker服务器上,我在sidekiq/redis URL-URL-Sespecification上出错: 我明白了 URI::InvalidURIError:方案redis不接受注册表部分:bsc\u redis:6379(或错误的主机名?)来自/usr/local/lib/ruby/2.0.0/uri/generic。rb:214:innew'from/usr/local/lib/ru

  • 我是Selenium和Ruby以及Cucumber/Gherkins世界的新手,正在尝试一个简单的脚本来导航到Google页面,找到搜索栏并输入一个单词,然后按enter或找到“Google search”元素并单击。 此外,要单击“Enter”,我可以执行send_keys:Enter或find Search按钮,并使用“click”正确吗? 提前谢谢你

  • 我想更新个人资料(accounts.google.com)中的工作、教育、基本信息和联系信息 我有文件“Testcases.feature” 场景:用户可以更新工作信息 我无法单击“编辑”按钮,因为网站中存在许多“编辑”按钮 当我运行cmd时: 中,我单击“编辑”按钮'

  • 对于一个电子商务应用程序,我试图将选项的散列(每个选项都有一个选择数组)转换为表示这些选择组合的散列数组。例如: 输入内部可能有其他选项,每个选项的选项数量不确定,但它只会嵌套 1 级深。任何

  • 问题内容: 我正在尝试对java中的AES数据进行编码,通过网络发送数据并以ruby对其进行解码。 基本字符串可以正常工作,但是一旦字符串的长度为16个字节或更多,我在解码后的红宝石字符串的编码中就会产生垃圾。我猜想它与填充有关(虽然不确定,因为它甚至影响精确大小为16的字符串) 我尝试使用PKCS或只是在字符串的末尾添加空格以匹配确切的长度而没有运气 还可以有人解释为什么我必须在红宝石中执行“

  • 我正在使用来存储一些计算机模拟的结果。不幸的是,当文件变得太大(从我所看到的超过2GB)时,我无法再将文件写入磁盘,我收到以下错误; 我知道这可能是的限制,但我想知道是否有解决方法。例如,要读取大型 JSON 文件,我会先文件,然后分批读取。也许最终的解决方案应该是在后端切换到一个合适的数据库,但是由于特定Ruby(Sketchup)的一些限制,我使用这个并不总是可能的。