如何使用javascript单击网页上的单选按钮

如何使用javascript单击网页上的单选按钮,javascript,html,Javascript,Html,我正在尝试从Invisalign(用于牙齿对齐)自动化web应用程序中的一系列重复任务。每次我提交修改案例时,都必须进行4次单击(3个按钮和1个收音机),然后重新加载页面,再单击两次 我已经计算出点击好,但我正在努力与单选按钮。对于第一个按钮,我使用以下按钮: document.querySelector("button[type='button'][data-qa-name='approve-proceed-button']").click(); 单击后,必须选择单选按钮

我正在尝试从Invisalign(用于牙齿对齐)自动化web应用程序中的一系列重复任务。每次我提交修改案例时,都必须进行4次单击(3个按钮和1个收音机),然后重新加载页面,再单击两次

我已经计算出点击好,但我正在努力与单选按钮。对于第一个按钮,我使用以下按钮:

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;