2013-04-25 51 views
1

我正在使用包裝Selenium Web驅動程序調用的FluentAutomation庫,因此該網站可以以更具行爲性的方式進行導航。如何使用FluentAutomation SeleniumWebDriver無需點擊按鈕?

只要元素有ID或其他不同的特性,它的工作原理很簡單:

I.Open(Site.BaseUrl); 
    I.WaitUntil(() => I.Expect.Exists("#name-search")); 
    I.Click("#applicationHost a"); 

但我需要的驅動程序點擊與下面的XPath表達式標識的按鈕:

//div[@id='questions']/div/div/div[4]/label/span[2] 
//div[@id='questions']/div/div/div[2]/label/span[2] 

等等。至少這是Selenium IDE記錄器返回的XPath。但我似乎無法找到正確的方式來引用這些按鈕。如你所見,唯一的區別是其中一個div的索引(div [4],div [2])。用這種XPath引用元素是否有一個共同的慣例?

更新:這裏是來自頁面檢查器的HTML摘錄。

<div class="small-12 large-10 columns large-centered" data-bind="foreach: currentQuestion.alternatives"> 
      <div class="valg"> 
       <label data-bind="attr: { for: 'radio-' + $index() }" for="radio-0"> 
        <input type="radio" name="radio-question-40" data-bind="attr: { for: 'radio-' + $index() }, value: value" class="hidden" for="radio-0" value="1"> 
        <span class="enighet" data-bind="text: ($index() + 1)">1</span> 
        <span class="custom radio" data-bind="click: $parent.pickAnswer, css: { checked: $data.selected }"></span> 
        <span class="enighet" data-bind="text: text">Text for option 1</span> 
       </label> 
      </div> 

      <div class="valg"> 
       <label data-bind="attr: { for: 'radio-' + $index() }" for="radio-1"> 
        <input type="radio" name="radio-question-40" data-bind="attr: { for: 'radio-' + $index() }, value: value" class="hidden" for="radio-1" value="2"> 
        <span class="enighet" data-bind="text: ($index() + 1)">2</span> 
        <span class="custom radio" data-bind="click: $parent.pickAnswer, css: { checked: $data.selected }"></span> 
        <span class="enighet" data-bind="text: text">Text for option 2</span> 
       </label> 
      </div> 

     </div> 
+0

你能顯示你的3-4個html行嗎? – e1che 2013-04-26 06:31:54

+0

嗨@ e1che,我用HTML提取更新了文章。 – 2013-04-26 07:01:36

回答

2

所以,我可以使用XPath的建議是:

BTN 1:"//div[@class='valg'][position() = 0]/label/span[2]"

BTN 2:"//div[@class='valg'][position() = 1]/label/span[2]"

或CSS選擇器

BTN 1:"div.valg:nth-child(1) label span.enighet"

btn 2:"div.valg:nth-child(2) label span.enighet"

但我看到,實際上你有更多的div比你所展示的。 告訴我發生了什麼事。

+0

嗨@ e1che,你的建議工作,我可以達到使用CSS選擇器的元素,因爲你建議(不知道爲什麼div的數量不符合前面的例子,我從檢查員粘貼它)。 有一點我仍然不確定。我無法使用I.Select命令,因爲沒有「select」元素。但是在任何一個元素上使用「點擊」都不會選擇任何內容。無論如何,這是一個不同的問題。謝謝您的幫助。 – 2013-04-26 08:11:26

0

有同樣的問題,我使用的硒的IDE identificate的XPATH每個elemt,然後用它像這樣:

driver.findElement(By.xpath(「// DIV [@ ID =」 thalamusboapp-218829419']/div/div [2]/div [3]/div/div/div [2]/div/span/span「));