如何使用javascript单击网页上的单选按钮
我正在尝试从Invisalign(用于牙齿对齐)自动化web应用程序中的一系列重复任务。每次我提交修改案例时,都必须进行4次单击(3个按钮和1个收音机),然后重新加载页面,再单击两次 我已经计算出点击好,但我正在努力与单选按钮。对于第一个按钮,我使用以下按钮:如何使用javascript单击网页上的单选按钮,javascript,html,Javascript,Html,我正在尝试从Invisalign(用于牙齿对齐)自动化web应用程序中的一系列重复任务。每次我提交修改案例时,都必须进行4次单击(3个按钮和1个收音机),然后重新加载页面,再单击两次 我已经计算出点击好,但我正在努力与单选按钮。对于第一个按钮,我使用以下按钮: document.querySelector("button[type='button'][data-qa-name='approve-proceed-button']").click(); 单击后,必须选择单选按钮
document.querySelector("button[type='button'][data-qa-name='approve-proceed-button']").click();
单击后,必须选择单选按钮。我试图将数据qa checked=从“false”更改为“true”(见下文)
或
我相信有一个非常简单的解决方案,但经过反复尝试,我就是无法让它工作
最后一部分是,我想设置一个以秒为单位的延迟,或者在下一页加载之前单击next按钮(使用第一个代码示例)。如果我能做到这一点,它会把一切都放在一起。我真的希望有人能帮我解决这个问题。这是一个非常棒的社区。提前感谢您的帮助。我喜欢尝试将这些东西组合在一起。使用正确的选择器
您的收音机是一个输入
元件,带有一种收音机,
在选择器中,您试图找到一个按钮
元素,甚至是某种类型的单选
元素
您需要在选择器中查找带有一种类型的收音机的输入
,并可以选择更具体的类document.querySelector('input[type=“radio”].c01917')
const radio=document.querySelector('input[type=“radio”].c01917');
radio.checked=true代码>
当您有时,为什么要搜索按钮[type='radio']
或收音机[type='radio']
谢谢您的查看。如果我有一个好的答案,也许我能解决这个问题。我当然是个新手,正在努力学习,但真的不知道太多。我没有任何理由支持我所做的事情,更多的是我所能做的事情能够真正起作用。我离编写高效的代码还有很长的路要走。如果代码符合我的要求,我很幸运。我通常可以继续尝试并得到一些东西。但是在这里,我被卡住了。如果你想检查无线电输入,选择输入元素并简单地将其checked
属性设置为true<代码>[data qa name='inspection-panel-warning-leave-as-is']
不是输入元素,这就是第二个解决方案不起作用的原因。你的意思是你想在它之前的实际无线电输入元素上执行该操作吗?如果类型为无线电
的元素是输入
。为什么要搜索按钮
或收音机
?尝试搜索和学习CSS/Javascript选择器。@Terry我希望选择一个收音机,以便单击下一个元素。有道理吗?非常感谢你,罗伯特。这似乎是罚单,虽然它不起作用。是否有方法使用数据qa名称而不是类(似乎是动态的)。在您提供的示例中,无线电输入
没有数据qa名称
属性。您试图选择的是另一个元素吗?这里有一个很好的CSS技巧的参考,当我输入脚本时选择@Peter:const radio=document.querySelector('input[type=“radio”].c01917');radio.checked=true代码>它不改变收音机的状态。我错误地认为我可以尝试将“data qa checked”更改为true。我会看看你提供的链接。非常感谢。
<div class=-"c012081"
<div class="c012081 c01912">
<label class="c01914 c012082 c01913" tabindex="-1">
<input class="c01917" type="radio" value="leaveAsIs">
<div class="c01918" data-qa-name="inspection-panel-warning-leave-as-is" data-qa-checked="true">
<svg class="c01920 c0189 c0192" viewBox="0 0 16 16"><path d="M8,1.33333333 C11.68,1.33333333 14.6666667,4.32 14.6666667,8 C14.6666667,11.68 11.68,14.6666667 8,14.6666667 C4.32,14.6666667 1.33333333,11.68 1.33333333,8 C1.33333333,4.32 4.32,1.33333333 8,1.33333333 Z M8,13.3333333 C10.9466667,13.3333333 13.3333333,10.9466667 13.3333333,8 C13.3333333,5.05333333 10.9466667,2.66666667 8,2.66666667 C5.05333333,2.66666667 2.66666667,5.05333333 2.66666667,8 C2.66666667,10.9466667 5.05333333,13.3333333 8,13.3333333 Z M8,11.3333333 C6.15905083,11.3333333 4.66666667,9.84094917 4.66666667,8 C4.66666667,6.15905083 6.15905083,4.66666667 8,4.66666667 C9.84094917,4.66666667 11.3333333,6.15905083 11.3333333,8 C11.3333333,9.84094917 9.84094917,11.3333333 8,11.3333333 Z"></path></svg>
</div>
<span class="c01921 c01921">Leave as is</span>
</label>
<label class="c01914 c012082 c01913" tabindex="-1"><input class="c01917" type="radio" value="fixForMe"><div class="c01918" data-qa-name="inspection-panel-warning-fix-for-me" data-qa-checked="false"><svg class="c01920 c0189 c0192" viewBox="0 0 16 16"><path d="M8,1.33333333 C4.32,1.33333333 1.33333333,4.32 1.33333333,8 C1.33333333,11.68 4.32,14.6666667 8,14.6666667 C11.68,14.6666667 14.6666667,11.68 14.6666667,8 C14.6666667,4.32 11.68,1.33333333 8,1.33333333 Z M8,13.3333333 C5.05333333,13.3333333 2.66666667,10.9466667 2.66666667,8 C2.66666667,5.05333333 5.05333333,2.66666667 8,2.66666667 C10.9466667,2.66666667 13.3333333,5.05333333 13.3333333,8 C13.3333333,10.9466667 10.9466667,13.3333333 8,13.3333333 Z"></path></svg></div><span class="c01921 c01921">Fix for me</span>
</label>
</div>
document.querySelectorAll("button[type='radio']")].find(function (ele) {return ele.innerText === "inspection-panel-warning-leave-as-is"})).click();
document.querySelector("radio[type='radio'][data-qa-name='inspection-panel-warning-leave-as-is']").checked = true;