2016-03-26 13 views
0

私はSelenium PHP Web Driverを使用しています。私はこのセレンの世界にはとても新しいです。Selenium PHP Webドライバでランダムラジオボタンを選択

私が持っている2ラジオオプション

enter image description here


HTML

<div class="form-group"> 
    <div>Gender</div> 
    <label class="radio-inline"> 
     <input type="radio" name="gender" value="male" checked="checked"> Male 
    </label> 
    <label class="radio-inline"> 
     <input type="radio" name="gender" value="female"> Female 
    </label> 
</div> 

ロケータ

01を選択します
$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender"); 
if ($gender) { 
    $gender->click("xpath=(//input[@name='gender'])[2]"); 
} 

私はそれが私の目のオプションをクリックしますように見えることはできません。

私は何かを忘れましたか?


は、ここで私はので、私はこれがすべて正しいことを願っていないPHPコーダー午前私の全体のファイル

cp.php

<?php 

require_once "phpwebdriver/WebDriver.php"; 

$length = 2; 
$str = ''; 
for ($x = 0; $x <= 5; $x++) { 
    $randomString = substr(str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length); 
    $str = $str.$randomString.':'; 
} 
$mac = strtoupper(substr($str, 0, -1)); 


$user = shell_exec('curl https://randomuser.me/api/'); 
$user = json_decode($user,true); 
$user = $user['results'][0]['user']; 

$rand_first = ucfirst($user['name']['first']); 
$rand_last = ucfirst($user['name']['last']); 
$rand_email = $user['email']; 


$webdriver = new WebDriver("localhost", "4444"); 
$webdriver->connect("firefox"); 
$webdriver->get("http://localhost:8888/captive-portal?client_mac=".$mac.'&ap=00:0D:67:66:F2:F6&original_uri=http%3A%2F%2Fwww.apple.com'); 


$first_name = $webdriver->findElementBy(LocatorStrategy::name, "firstname"); 
if ($first_name) { 
    $first_name->sendKeys(array($rand_first)); 
} 

$last_name = $webdriver->findElementBy(LocatorStrategy::name, "lastname"); 
if ($last_name) { 
    $last_name->sendKeys(array($rand_last)); 
} 

$email = $webdriver->findElementBy(LocatorStrategy::name, "email"); 
if ($email) { 
    $email->sendKeys(array($rand_email)); 
} 

//Issues 
$age = $webdriver->findElementBy(LocatorStrategy::name,"age"); 
if ($age) { 
    $age->click("xpath=(//input[@name='age'])[2]"); 
} 

//Issues 
$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender"); 
if ($gender) { 
    $gender->click("xpath=(//input[@name='gender'])[2]"); 
} 


$submit = $webdriver->findElementBy(LocatorStrategy::id, "btn-cp-submit"); 
if ($submit) { 
    $submit->submit(); 
} 

$webdriver->close(); 

?> 

答えて

2

です。私はあなたが使用しているPHP Seleniumラッパーを100%明確にしているわけではありません。私はこれらの例のいくつかをhttps://github.com/facebook/php-webdriverを使って書きます。

$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender"); 
if ($gender) { 
    $gender->click("xpath=(//input[@name='gender'])[2]"); 
} 

あなたしかそれをラジオボタンの最初のインスタンスを与えている:あなたはない

。そして、変数を渡すことができないクリックイベントを渡そうとしています。 Clickは関数ですが、引数はありません。

あなたはこのような何かを行うことができますいくつかのランダム生成されたボタンを持つようにしたい場合:1つの小さな違いに気付くでしょう

$gender = $webdriver->findElementsBy(LocatorStrategy::name,"gender"); 
if (rand() % 2 == 0) { 
    $gender[0]->click(); 
}else{ 
    $gender[1]->click(); 
} 

を、私は複数の要素でFindElement (BY)を使用していますは、これらのすべてをページで取得し、配列に格納すると言います。

私はPHPの配列でどのように配列が動作するのかわかりませんが、そのようなものはあなたのために働くはずです。

関連する問題