0

Seleniumn :: Remote::DriverのPerlモジュールでXPATHを正しく使用する方法を理解しようとしています。具体的には、2つの入力フィールドが同じ値を持つさまざまな入力フィールドを含むHTMLフォームがあります。'値'に基づいて2番目の入力フィールドを選択したい(この値は両方の入力フィールドで同じです)。ターゲットを次のように表示するSeleniumIDE(1.10.0)でこれを試しました。

 xpath=(//input[@value='clickhere'])[2]

Selenium :: Remote::Driverモジュールを使用するPerlスクリプトでこの動作をエミュレートしようとしています。

$elem = $driver->find_element("xpath=(//input[\@value='clickhere'][2])");
$driver->mouse_move_to_location(element => $elem, xoffset => 0, yoffset => 0);  
$driver->click;

これは機能せず、エラーがスローされます(以下を参照)。私は通常、HTMLフォーム内で一意の「値」を持つ要素を選択できるため、エラーは「[2]」の部分に関係していると思います。xpathをfind_element関数にコーディングして、1番目と2番目の要素の両方の値が「cickhere」であるHTMLフォームの2番目の要素を選択してクリックする正しい方法は何ですか?

Error while executing command: Argument was an invalid selector (e.g. XPath/CSS).: The given selector xpath=(//input[@value='click'][2]) is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Unable to locate an element with the xpath expression xpath=(//input[@value='clickhere'][2]) because of the following error:
[Exception... "The expression cannot be converted to return the specified type."  code: "0" nsresult: "0x805b0034 (TypeError)"  location: "file:///C:/Temp/anonymous6984397347674679222webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js Line: 5696"]
Command duration or timeout: 16 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html
Build info: version: '2.30.0', revision: 'dc1ef9c', time: '2013-02-19 00:15:27'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.7.0_11'
Session ID: ce542470-8a3a-41da-a73a-2a55275290d3
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=XP, databaseEnabled=true, cssSelectorsEnabled=true, javascriptEnabled=true, acceptSslCerts=true, handlesAlerts=true, browserName=firefox, browserConnectionEnabled=true, nativeEvents=true, webStorageEnabled=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=19.0}] at C:\Perl\scripts\frontend\createAccount.pl line 144.
4

1 に答える 1

4

ドキュメントには、XPath を使用するメソッドが示されています。

ロケータ スキームは別の引数として渡すことができますが、デフォルトは であるため、ここでは必要ありませんxpath

試す

my $elem = $driver->find_element('//input[@value="clickhere"][2]');
于 2013-02-20T09:46:56.650 に答える