我試圖讓這個按鈕,硒在C#硒找不到元素按鈕
<a id="1|0AqnCSdkjQ0|none" href="" target="_self" rel="nofollow" class="download_link 1">Download</a>
我試着用id和class,但沒有奏效。
這裏是網頁: http://www.mp3juices.cc/ - >下一頁
我試圖讓這個按鈕,硒在C#硒找不到元素按鈕
<a id="1|0AqnCSdkjQ0|none" href="" target="_self" rel="nofollow" class="download_link 1">Download</a>
我試着用id和class,但沒有奏效。
這裏是網頁: http://www.mp3juices.cc/ - >下一頁
您的代碼與「複合類」錯誤而失敗,因爲你,基本上,提出了兩個要求類名上。
該按鈕的類別爲download_link
。
如果你做了類似driver.findElements(By.className("download_link"))
的事情,你會得到一個所有按鈕的列表,並得到你想要的。
(以上片段是Java,所以你可能要它適應C#)
我確實是這樣的: ReadOnlyCollection
您確定該按鈕在此執行點是否可見?此時可能沒有渲染按鈕。您可以在使用FindElements之前使用新的WebDriverWait(驅動程序,10).until(ExpectedConditions.visibilityOfElementLocated(By.className(「download_link」))。 –
,你可以使用它作爲一個解決方案
driver.findElement(By.xpath("//a[@class='download_link 1'] and contains(text(),'Download')"));
附加信息:無效的選擇器:找不到xpath表達式// a [@ class ='download_link 1']幷包含(text(),'Download'),因爲以下錯誤: – user3181034
我在css類名中發現的內容不能有空格:) – user3181034
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
try
{
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
try
{
return d.FindElement(By.ClassName("dl_link 1"));
}
catch
{
return null;
}
});
}
catch(Exception e)
{
}
ReadOnlyCollection<IWebElement> lists = driver.FindElements(By.ClassName("download_link"));
lists[0].Click();
*的代碼沒有經過優化,但它的效果很好。 (我正在使用的第一部分等待按鈕被加載)。
您應該看看到['WebDriverWait'](https://selenium.googlecode.com/git/docs/api/dotnet/html/T_OpenQA_Selenium_Support_UI_WebDriverWait.htm),例如'wait.Until(ExpectedConditions.ElementExists(someElement));' – JeffC
你嘗試
driver.FindElement(By.CssSelector("a.download_link.2")
當您嘗試使用「DOWNLOAD_LINK 2」您請求兩類名。您可以在CSS選擇器中指定兩個類名(或更多),並在它們之間放置一段時間。上面的CSS選擇器是這樣讀取的A
標籤download_link
和類2
。
它生成的ID,所以我認爲它是不可能得到它 – user3181034
我試過類「download_link 2」,我得到這個錯誤:化合物類名不支持。考慮搜索一個類名並過濾結果。 – user3181034