2016-08-11 174 views
2

我無法單擊展開按鈕,該按鈕打開列出分類標題複選框的頁面部分。
似乎webdriver認爲它正在執行單擊「展開」按鈕的操作,但該部分保持摺疊狀態。
下面是HTML的一部分如何使用Selenium Webdriver單擊展開按鈕以打開部分C#

代碼

metadata-editor name="resourceModelTaxonomyTypeIds" label-text="Type" matadata-fieldname="Type" resource-id="id" selected-ids="resourceModel.TaxonomyTypeIds" required class="ng-isolate-scope" 
<div class="form-group" ng-class="{'has-error': (required && form.$submitted && !isValid)}" 
    ::before 
    <div class="col-md-9"> 
    <!-- ngRepeat: node in loadSelectedNodes() --> 
    <br ng-show="loadSelectedNodes().length > 0" class="ng-hide" 
    <button type="button" class="btn btn-sm btn-info btn-expand-taxonomy ng-pristine ng-binding ng-invalid ng-invalid-valid ng-touched" name="resourceModelTaxonomyTypeIds" ng-model="selectedIds" ng-click="toggleView(isCollapsed)"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> Expand</button> 

下面是我的一些工作方式已行不通的:

嘗試1:我想簡單的。點擊()動作

driver.FindElement(By.Name("resourceModelTaxonomyTypeIds")).Click(); 

結果:Webdrive r通過該步驟,但屏幕上沒有發生任何事情,「展開」按鈕仍處於摺疊狀態,並且該選項仍處於隱藏狀態。

嘗試2:我試過MoveToElement行動

Actions clickExpand = new Actions(driver); 
clickExpand.MoveToElement(driver.FindElement(By.Name("resourceModelTaxonomyTypeIds"))).Click().Perform(); 

結果:和以前一樣,認爲的webdriver一切都很好,但在現實中展開按鈕仍然沒有擴大的部分。

嘗試3:安裝硒IDE,做了記錄和回放,看看它的代碼它(通過轉換爲C#) 硒IDE記錄它與.Click()行動正如我在上面嘗試1嘗試。

我有點卡在爲什麼這不適用於這個特定的按鈕。有沒有人遇到過這個問題,或者處理過這些類型的展開按鈕?

注意:手動測試的擴展按鈕通過點擊證明按鈕的工作,只是webdriver似乎並沒有這樣做。

+0

您是否嘗試過使用JavaScript來執行的點擊?使用ExecuteScript命令? –

+0

一旦嘗試第三次嘗試爲'((IJavaScriptExecutor)驅動程序).ExecuteScript(「arguments [0] .click()」,driver.FindElement(By。名稱(「resourceModelTaxonomyTypeIds」)));'讓我知道 –

+0

並確保提供的名稱來定位按鈕是唯一的,並找到正確的按鈕,你想.. :) –

回答

1

事實證明這種類型的擴展按鈕,如果你的glyphion雪佛龍後實際去點擊,那麼行動執行的...

driver.FindElement(
      By.CssSelector(
       ".glyphicon.glyphicon-chevron-right")).Click(); 

當按鈕被摺疊的雪佛龍是「正確的」,當擴展雪佛龍是「下」,所以理論上如果你有多個擴展,你可以重複相同的代碼,將擴大所有這些......或更聰明,並與父母,但都工作。

要點擊合攏你需要屏幕區域....

driver.FindElement(
       By.CssSelector(
        ".glyphicon.glyphicon-chevron-down")).Click(); 
0

我不知道該元素是否可點擊?您是否嘗試過使用WebDriverWait和Expected Condition標誌?一些示例代碼。這裏更多的引用http://selenium-python.readthedocs.io/waits.html?highlight=webdriverwait

try: 
    more = WebDriverWait(self.driver, 10,poll_frequency=2,ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException]).until(EC.element_to_be_clickable((By.Name, 'resourceModelTaxonomyTypeIds'))) 
except TimeoutException: 
    break 

more.click() 
相關問題