我正在尝试为下面的选择器添加一个“id”,但是它不起作用,因为该元素似乎是一个 DOM。如何为 JQuery 转换 DOM 元素,然后添加“id”属性?
script = '$(".block-header__helper-menu .ml1").attr("id", "tempid")';
page.execute_script(script)
我正在尝试为下面的选择器添加一个“id”,但是它不起作用,因为该元素似乎是一个 DOM。如何为 JQuery 转换 DOM 元素,然后添加“id”属性?
script = '$(".block-header__helper-menu .ml1").attr("id", "tempid")';
page.execute_script(script)
假设您正在处理的页面已加载 JQuery,并且您在运行脚本之前检查了该元素是否存在,那么您显示的脚本应该可以正常工作。但是,您在评论中添加的两个元素(将来如果您编辑问题会更好,以便可以更好地格式化元素)是无效的,因为您需要button在打开子 span 元素之前完成 (>) 元素. 不确定这是由于注释格式还是您的 html 中有错误。假设 HTML 是有效的(或者你修复它)确实不需要使用 JQuery 来做你正在做的事情,所以如果页面没有加载 JQuery 那么你可以做类似的事情
page.execute_script('document.querySelector(".block-header__helper-menu .ml1").id = "tempid")
如果您已经通过 Capybara 找到了该元素(以确保它存在),那么您可以这样做
element = page.find('.block-header__helper-menu .ml1')
...
element.execute_script('this.id = "tempid"')
话虽如此,确实没有必要为这些元素分配 id。您只需要使用 Capybara 方法上可用的选项来定位各个按钮。要单击它们,您可以使用按钮的文本
click_button 'A-'
click_button 'A+'
或者,如果您只想找到按钮元素find(:button, 'A-'),等等。
或者,您可以通过属性差异找到元素,然后单击它们
find('button[data-ga-action="zoom-out"]').click
find('button[data-ga-action="zoom-in"]').click
如果您确实需要找到内联跨度(通常不是要与之交互的元素,而是您的初始 jQuery 目标用于添加 id 的元素),那么您也可以使用文本内容来找到它
find('span.inline', text: 'A-')
等等