我正在使用包裝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>
你能顯示你的3-4個html行嗎? – e1che 2013-04-26 06:31:54
嗨@ e1che,我用HTML提取更新了文章。 – 2013-04-26 07:01:36