Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何选择具有相同数据测试ID的下拉项_C#_Html_Selenium_Xpath_Selenium Webdriver - Fatal编程技术网

C# 如何选择具有相同数据测试ID的下拉项

C# 如何选择具有相同数据测试ID的下拉项,c#,html,selenium,xpath,selenium-webdriver,C#,Html,Selenium,Xpath,Selenium Webdriver,我试图让selenium在下拉列表中单击一个选项。有几个选项,看起来它们唯一独特的地方就是链接文本。它们都有“数据测试”,而且都是一样的。 有人看到在下拉列表中单击特定选项的方法吗 下面是下拉列表中的几个选项示例:应用程序安装和潜在客户开发 <li class="" data-testid="ads-mini-grouped-objective-selector-option" style=""><div aria-checked="false" aria-disabled="

我试图让selenium在下拉列表中单击一个选项。有几个选项,看起来它们唯一独特的地方就是链接文本。它们都有“数据测试”,而且都是一样的。 有人看到在下拉列表中单击特定选项的方法吗

下面是下拉列表中的几个选项示例:应用程序安装和潜在客户开发

<li class="" data-testid="ads-mini-grouped-objective-selector-option" style=""><div aria-checked="false" aria-disabled="false" class="_2wpb _3v8w" data-testid="SUISelectorOption/container" role="menuitem" style="letter-spacing: normal; color: rgb(75, 79, 86); font-size: 12px; font-weight: normal; font-family: Arial, sans-serif; line-height: 16px; padding: 6px 24px 6px 32px;" tabindex="-1"><span class="_27_z _4s-j" style="margin-left: 0px; margin-right: 8px;"></span><div class="_3leq"><span>App installs</span></div></div></li>

<li class="" data-testid="ads-mini-grouped-objective-selector-option" style="background-color: rgba(29, 33, 41, 0.08);"><div aria-checked="false" aria-disabled="false" class="_2wpb _3v8w" data-testid="SUISelectorOption/container" role="menuitem" style="letter-spacing: normal; color: rgb(75, 79, 86); font-size: 12px; font-weight: normal; font-family: Arial, sans-serif; line-height: 16px; padding: 6px 24px 6px 32px;" tabindex="-1"><span class="_27_z _5da8" style="margin-left: 0px; margin-right: 8px;"></span><div class="_3leq"><span>Lead generation</span></div></div></li>
我曾尝试通过链接文本进行选择,但没有成功

driver.findElement(By.xpath("(//li[@data-testid='ads-mini-grouped-objective-selector-option'])[2]")).click();

尝试使用此xpath单击具有相同数据testid的第二个数据:

您可以使用xpath按属性数据testid和内部文本选择li元素:

//li[@data-testid='ads-mini-grouped-objective-selector-option' and .='Lead generation']

har07答案是个好答案, 您也可以尝试将此作为一个选项

//*[text()='App installs']/parent::div/parent::div/parent::li
因为并不是所有的html都给出了,所以这是我能得到的唯一选项。要从下拉列表中单击某个选项,您可以编写如下clickOption函数:

public void clickOption(String option)
{
    driver.FindElement(By.XPath("//li[@data-testid='ads-mini-grouped-objective-selector-option']//span[.='" + option + "']")).Click();
}
clickOption("App installs");
//or
clickOption("Lead generation");
现在,从main或@Test annotation类中,调用函数clickOption方法,并使用要选择的选项,如下所示:

public void clickOption(String option)
{
    driver.FindElement(By.XPath("//li[@data-testid='ads-mini-grouped-objective-selector-option']//span[.='" + option + "']")).Click();
}
clickOption("App installs");
//or
clickOption("Lead generation");

我宁愿用更准确的方法。如果下拉选项顺序更改,会发生什么情况?有没有一种方法可以将其与链接文本结合起来@Deepany你的函数正是我想要的。这很有帮助,也很有效。