Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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# 无法使用selenium chromedriver单击下拉项_C#_Selenium_Selenium Webdriver - Fatal编程技术网

C# 无法使用selenium chromedriver单击下拉项

C# 无法使用selenium chromedriver单击下拉项,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我无法单击下拉项 我在: 我可以使用下面的代码单击“代理位置”选项,但无法从下拉列表中选择任何项目 driver.FindElement(By.XPath("/html/body/main/div[2]/form/fieldset/div[2]/div[1]/p")).Click(); 如何从下拉列表中单击德国或美国选项 我尝试了下面的代码,但没有成功 var dd = driver.FindElement(By.XPath("/html/body/main/div[2]/form/field

我无法单击下拉项

我在:

我可以使用下面的代码单击“代理位置”选项,但无法从下拉列表中选择任何项目

driver.FindElement(By.XPath("/html/body/main/div[2]/form/fieldset/div[2]/div[1]/p")).Click();
如何从下拉列表中单击德国或美国选项

我尝试了下面的代码,但没有成功

var dd = driver.FindElement(By.XPath("/html/body/main/div[2]/form/fieldset/div[2]/div[1]/p")).Click();
var select = new SelectElement(dd);
select.SelectByValue(" Germany");

如果不知道下拉菜单使用的逻辑,就很难提供适合您的代码。但我可以马上看出它不是一个select标记,SelectByValue对它不起作用

这就是事情变得糟糕的地方,你必须使用动作链。您必须找到包含所需文本的子元素,然后单击它

dropdown = driver.FindElement(By.XPath("/html/body/main/div[2]/form/fieldset/div[2]/div[1]/p"))
actions = webdriver.ActionChains(driver)
actions.click(dropdown)
// var childSelection = // Logic to find child elements of dropdown
actions.click(childSelection).perform();
你可以做:

 Select dropdown = new SelectElement(driver.findelement(By.id("dropdown")));
 dropdown.selectByVisibleText("Germany"); or dropdown.selectByIndex(2);
进一步阅读可能会有所帮助:


  • Germany
    (代码的最后一行)前面的空格是故意的还是错误的?您需要添加相关的html。此外,所使用的xpath对于任何微小的UI更改都是脆弱的。