我在Selenium遇到了麻烦。我正在尝试打开Google并搜索Selenium
。然后打开出现在第一页,所以我这样做:硒C#无法找到元素
driver.FindElement(By.XPath("//*@id=\"rso\"]/div/div/div[1]/div/h3/a")).Click();
不过,这并不与XPath打开第一个网址。它说:Unable to locate element
你能帮我吗?先谢谢你!
我在Selenium遇到了麻烦。我正在尝试打开Google并搜索Selenium
。然后打开出现在第一页,所以我这样做:硒C#无法找到元素
driver.FindElement(By.XPath("//*@id=\"rso\"]/div/div/div[1]/div/h3/a")).Click();
不过,这并不与XPath打开第一个网址。它说:Unable to locate element
你能帮我吗?先谢谢你!
您的XPath语法是错误的,*符号后面应该有一个括号。
相对的xpath:(// DIV [@ ID = 'IRES'] // DIV [@类= 'SRG'] // H3 [@类= 'R']/a)的[1]
建议使用相对xpath,因为如果页面的html获得更改,则绝对xpath将失败
在单击元素之前,请提供Explicit等待。
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("(//div[@id='ires']//div[@class='srg']//h3[@class='r']/a)[1]"))).Click();
试试吧,让我知道它是否适合你。
尝试等待,直到生成的链接和点击:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class=\"rc\"]/h3/a"))).Click();
它做到了!非常感谢你......我也试着用明确的等待和隐含的等待,但没有奏效。你的方式是完美的。再次感谢你!!! –
@Akarsh,当你的'html'被改变时,这个上面的答案将不起作用,所以按照我的意见,你应该使用'relative xpath',而不是'absolute xpath'。 –
@JainishKapadia用相对xpath更新了答案。谢谢 – Akarsh