单击具有相同名称的不同html类

时间:2019-07-04 17:17:55

标签: java selenium

我有一个HTML单选框,选择是或否。 但是Yes和Not类具有相同的类名。

是的代码

<div class="quantumWizTogglePaperradioRadioContainer"><div class="quantumWizTogglePaperradioOffRadio exportOuterCircle"><div class="quantumWizTogglePaperradioOnRadio exportInnerCircle"></div></div></div>

禁止使用代码

<div class="quantumWizTogglePaperradioRadioContainer"><div class="quantumWizTogglePaperradioOffRadio exportOuterCircle"><div class="quantumWizTogglePaperradioOnRadio exportInnerCircle"></div></div></div>

使用此代码时,该程序单击单选框形式的第一个。

radioButton = String.format("//div[@class='quantumWizTogglePaperradioOffRadio exportOuterCircle']");
driver.findElement(By.xpath(radioButton)).click();

我怎么认出他们?

2 个答案:

答案 0 :(得分:0)

我建议使用绝对XPath而不是相对XPath来解决。请在下面使用Google搜索栏查看绝对XPath与相对XPath有何不同。

d = ('Cost': [44439, 43936, 44464, 41533, 46343], 
         'A': [515, 929, 800, 979, 1165], 
         'B': [541, 710, 675, 1147, 939], 
         'C': [928, 711, 824, 758, 635, 901])

    df = pd.DataFrame(data=d)

或者您可以使用其他元素的引用,例如,假设您之前有一个带有yes和no选项的div,且id =“ Radiobutton”。您仍然可以按以下方式识别是和否

是-Relative XPath - `//*[@id="tsf"]/div[2]/div/div[1]/div/div[1]/input` absolute XPath - `/html/body/div/div[3]/form/div[2]/div/div[1]/div/div[1]/input` 否-//*[@id="Radiobutton"]/div[1]

让我知道是否需要澄清

enter image description here

Actual Website look

您可以在单选按钮上方看到,我可以举一个例子。因此我们正在尝试以黑色突出显示div中单选按钮的可能路径。与您的问题类似,它具有相同的类名。所以下面是一些可行的方法

  1. 相对XPath使用表单ID(位于层次结构中)

    //*[@id="Radiobutton"]/div[2]
  2. 使用绝对路径-绝对路径是跟踪从顶部到元素的层次结构。在这种情况下

    Yes - `//*[@id="create-form"]/div[3]/div/div/div/ul/li/div[2]/div/div/div[1]`
    No - `//*[@id="create-form"]/div[3]/div/div/div/ul/li/div[2]/div/div/div[2]`
    

如果您在此处看到1和2之间的差异。在绝对路径中,它从HTML标记开始并跟踪DOM树中的元素,而不是从表单id作为参考。

答案 1 :(得分:0)

如果只有两个单选框,请按顺序使用它

第一个单选框:

radioButton = String.format("(//div[@class='quantumWizTogglePaperradioOffRadio exportOuterCircle'])[1]");

第二个单选框:

radioButton = String.format("(//div[@class='quantumWizTogglePaperradioOffRadio exportOuterCircle'])[2]");