gpt4 book ai didi

c# - 使用 Selenium,如何单击基于关联标签的单选按钮

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:07 24 4
gpt4 key购买 nike

我在 C# 中使用 Selenium,我需要能够根据与该单选按钮关联的标签文本指定要单击网站上的哪个单选按钮。我需要能够将该文本作为参数传递。以下是单选按钮代码的示例(这是三个按钮的代码):

<input id="radSelect152_222_1369" class="bgRadioNotChecked" type="radio" onclick="BGQ.Ajax.SelectAnswer(this, '152','1369','3', '547');" value="1369" onfocus="BGQ.View.setLastElement(true);" name="radSelect152_222">
<label class="inline" for="radSelect152_222_1369">Watermelon</label>

<input id="radSelect152_222_1370" class="bgRadioNotChecked" type="radio" onclick="BGQ.Ajax.SelectAnswer(this, '152','1370','3', '547');" value="1370" onfocus="BGQ.View.setLastElement(true);" name="radSelect152_222">
<label class="inline" for="radSelect152_222_1370">Papaya</label>

<input id="radSelect152_222_1371" class="bgRadioNotChecked" type="radio" onclick="BGQ.Ajax.SelectAnswer(this, '152','1371','3', '547');" value="1371" onfocus="BGQ.View.setLastElement(true);" name="radSelect152_222">
<label class="inline" for="radSelect152_222_1371">Mango</label>

我希望能够在 Excel 输入文件中指定“Mango”(我的所有文件输入都正常工作)并让 Selenium 单击相关的单选按钮。我读到并一直在尝试的一种方法是执行以下操作:

  1. 找到以目标文本(“Mango”)作为文本的元素
  2. 从该元素获取 FOR 属性
  3. 找到 ID 等于该 FOR 属性的输入
  4. 单击该输入元素。

问题是,我是 Selenium 的新手,不太了解执行这四个步骤的语法。有人可以用具体的代码示例告诉我方法吗?另外,或者,是否有更好/更智能的方法来做到这一点?如果是,请具体说明。

我在这里包含了我开始编写的方法,我在其中传递了目标文本。我知道这是错误的(尤其是在 By.XPath 部分)。

    public void ClickRadioButtonByLabelText(string labelText)
{
// (1) Find the element that has the label text as its text
IWebElement labelForButton = commondriver.FindElement(By.XPath(//label[text()='labelText']));
// (2) Get the FOR attribute from that element
string forAttribute
// (3) Find the input that has an id equal to that FOR attribute
// (4) Click that input element
}

谢谢。

最佳答案

你有两个选择。

选项 1 - 在单个 XPath 查询中完成所有操作

XPath 查询将是:

//input[@id=//label[text()='TestCheckBox']/@for]

也就是说,获取具有 idinput,该 id 来自 labelfor 属性具有 "TestCheckBox"的 text

选项 2 - 从标签中获取属性,然后在单独的步骤中查找元素

public void ClickRadioButtonByLabelText(string labelText)
{
// (1) Find the element that has the label text as its text
IWebElement labelForButton = commondriver.FindElement(By.XPath("//label[text()='labelText']"));

// (2) Get the FOR attribute from that element
string forAttribute = labelForButton.GetAttribute("for");

// (3) Find the input that has an id equal to that FOR attribute
IWebElement radioElement = commondriver.FindElement(By.Id(forAttribute));

// (4) Click that input element
radioElement.Click();
}

关于c# - 使用 Selenium,如何单击基于关联标签的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com