0

私は selenium-standalon-2.25.0 を使用しており、chrome はバージョン 13 です。

html は次のとおりです。

<select name="suffix" class="select">
<option value="" selected>Please select...</option>
<option value="Ms.">Ms.</option>
<option value="Mrs.">Mrs.</option>
<option value="Mr.">Mr.</option>
</select>

オプションの 1 つを選択するために呼び出すコマンドを次に示します。もう 1 つは、db から取得した変数であり、問​​題は、db から取得した接尾辞です。これは、Firefox と IE では機能しますが、Chrome では機能しません。

driver.findElement(By.xpath("//option[@value='" + other + "' and ..[@name='" + question + "']]")).click();

これは私が得ている例外です:

org.openqa.selenium.InvalidSelectorException: findElement execution failed;
 Unable to locate an element with the xpath expression //option[@value='Ms.' and ..[@name='suffix']] because of the following error:
Error: INVALID_EXPRESSION_ERR: DOM XPath Exception 51 (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 52 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:08:56'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_25'
Driver info: driver.version: EventFiringWebDriver
Session ID: bf6368f23db4a2fe27d9b96849af1b1d
Command duration or timeout: 646 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:09:54'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-31-generic', java.version: '1.6.0_31'
Driver info: driver.version: RemoteWebDriver
Session ID: 134947044387

私はしばらくこれに取り組んできましたが、私の推測では、私の findElement ステートメントに関係しています。奇妙な部分は、FF と IE で正常に動作することです。どんな助けでも大歓迎です。再度、感謝します。

ブライアン

4

2 に答える 2

1

違う方法でやって...

//select[@name='suffix']/option[@value='Ms.']

XPath クエリが有効ではないようです。論理的にも意味がありません。木に登るのではなく、下に行きます。

于 2012-10-05T23:35:38.420 に答える
0

Arranで言及されているアプローチに加えて、css セレクターも使用してみてください。xPath よりも高速に動作します。

String msCssSelector= "select[name='suffix']>option[value='Ms.']"
String mrsCssSelector=  "select[name='suffix']>option[value='Mrs.']"
String mrCssSelector=  "select[name='suffix']>option[value='Mr.']"

また、firepath で見つかったロケーター、ffox の firebug アドオンを確認することを忘れないでください。 ロケータ検証

アプローチ1

driver.findElement(By.cssSelector(msCssSelector)).click();

アクションビルダーAPIを使用したアプローチ2

WebElement mnuOptionElement;
mnuOptionElement = driver.findElement(By.cssSelector(mrCssSelector));
Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.moveToElement(mnuOptionElement).click();

Actions builder の詳細については、こちらから入手できます

アプローチ3 jsExecutorを使用してWeb要素をクリックします。あらゆる状況で常に私のために働いています。

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+msCssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

これがうまくいくことを願っています)

于 2012-10-06T08:30:31.643 に答える