Capybara:按包含 NOT 的属性查找元素
Capybara: Find element by attribute containing something NOT
我在水豚环境中遇到以下问题:
我需要搜索一个元素。该元素包含一个唯一的属性。该属性是异步更改的。
我需要这个属性的内容,但是当我只是搜索这个属性时,我得到的是一个 nil。
我可以等到属性具有 属性,但由于这是 Capybaras 的工作,我认为可能有一个可能的选择器,它可以搜索类似的内容:
find('button[uniqueattribute] != nil')
知道怎么做吗?
已经谢谢了!
如果属性被添加到按钮元素(最初没有属性)那么你可以这样做
find('button[attribute_name]')
将等待(最多 Capybara.max_default_wait_time 秒让具有该属性的按钮元素出现在页面上 - https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors。等待然后获取该属性的 contents/value你可以做
find('button[attribute_name]')['attribute_name']
如果您只想等到属性不存在或不为空,那么您可以这样做
find('button:not([attribute_name=""])')
如果您需要确保该属性存在但不为空,则为
find('button[attribute_name]:not([attribute_name=""])')
我找到了一个可能的解决方案:
您可以使用 Xpath(这很棒)使用字符串长度检查元素的长度。
所以就我而言,解决方案是:
find(:xpath, ".//button[@unique_attribute_name[string-length() != 0]]")
现在 Capybara 一直等到属性有值。如果还有更漂亮的解法,就告诉我吧
我在水豚环境中遇到以下问题:
我需要搜索一个元素。该元素包含一个唯一的属性。该属性是异步更改的。 我需要这个属性的内容,但是当我只是搜索这个属性时,我得到的是一个 nil。
我可以等到属性具有 属性,但由于这是 Capybaras 的工作,我认为可能有一个可能的选择器,它可以搜索类似的内容:
find('button[uniqueattribute] != nil')
知道怎么做吗?
已经谢谢了!
如果属性被添加到按钮元素(最初没有属性)那么你可以这样做
find('button[attribute_name]')
将等待(最多 Capybara.max_default_wait_time 秒让具有该属性的按钮元素出现在页面上 - https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors。等待然后获取该属性的 contents/value你可以做
find('button[attribute_name]')['attribute_name']
如果您只想等到属性不存在或不为空,那么您可以这样做
find('button:not([attribute_name=""])')
如果您需要确保该属性存在但不为空,则为
find('button[attribute_name]:not([attribute_name=""])')
我找到了一个可能的解决方案: 您可以使用 Xpath(这很棒)使用字符串长度检查元素的长度。 所以就我而言,解决方案是:
find(:xpath, ".//button[@unique_attribute_name[string-length() != 0]]")
现在 Capybara 一直等到属性有值。如果还有更漂亮的解法,就告诉我吧