2016-03-26 14 views
0

Selenium PHP Web Sürücüsü kullanıyorum. Bu Selenyum dünyasına çok yeniyim.Selenium'da Rastgele Radyo Düğmesi Seç PHP Web Sürücüsü

Ben 2 radyo seçeneği

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> 

Locator

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

bu benim ikinci seçeneğine tıklayın yapmak için görünmüyor olabilir.

Hiçbir şey kaçırdım mı?


İşte bu yüzden bu bütün doğru olduğunu umut PHP kodlayıcı değilim benim bütün dosya

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(); 

?> 

cevap

2

olduğunu. Kullanmakta olduğunuz PHP Selenium sargıcında% 100 net değilim, bu kesinlikle yardımcı olur. Bu örneklerden bazılarını https://github.com/facebook/php-webdriver kullanarak yazacağım.

Bunu yaptığınızda: Yalnızca hiç o radyo düğmesinin ilk örneğini veriyoruz

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

. Ve sonra değişkenleri iletemediğiniz bir tıklama etkinliğini geçmeye çalışıyorsunuz. Tıklama bir işlevdir, ancak herhangi bir argümanı yoktur.

bazı rasgele oluşturulan düğmeye sahip olmak istiyorsanız böyle bir şey yapabileceğini: Ben kullanıyorum

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

tek bir minik farkı fark edeceksiniz FindElement ler By() çoğul Elements ile, bunların tümünü sayfada yakalayıp bir dizi halinde sakladığını söylüyor.

Dizilerin php sürümüyle nasıl çalıştığından% 100 emin değilim, ancak bunun gibi bir şey sizin için çalışmalıdır.