我在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