如何选择aria-controls类型的元素?

时间:2018-03-31 20:34:36

标签: c# selenium-webdriver webdriver

aria-controls WebDriver

我尝试过多种方法在button元素(dropbtn)上执行WebDriver Click()方法:

//*[@id="pedigree-controls"]/div[2]/div/div/button

但是,出于某种原因,可能因为它是一个咏叹调控件并且它包含 span class =" visual-hidden ",Selenium不会点击它。

WebNavigator.Driver.FindElement(By.XPath("//div[@id='pedigree-controls']/div[2]/div/div/button")).Click();

我想知道是否有办法达到那个特定元素。有谁知道怎么做?

  • 请参阅附图。

2 个答案:

答案 0 :(得分:0)

从您提供的 WebElement 的快照中,似乎要扩展下拉列表,您必须在click()标记上调用<span>通过以下任一定位器策略选择选择谱系视图

WebNavigator.Driver.FindElement(By.XPath("//div[@id='pedigree-controls']//button[@class='dropbtn']//span[@class='visually-hidden']")).Click();
//or
WebNavigator.Driver.FindElement(By.XPath("//div[@id='pedigree-controls']//button[@class='dropbtn']//span[contains(.,'Select Pedigree View:')]")).Click();

答案 1 :(得分:0)

我得到了答案! 该页面正在使用使用Polymer构建的Shadow DOM Elements,这就是我可以找到该元素但不能执行任何操作的原因。为了达到citied元素,我需要在父元素div,tags等中找到子元素,直到元素到达为止。