我正在使用Selenium PHP Web Driver。我对这个Selenium世界很陌生。
我有2个无线电选项
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>
选择定位器
$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender");
if ($gender) {
$gender->click("xpath=(//input[@name='gender'])[2]");
}
我似乎无法点击我的第二个选项。
我错过了什么吗?
这是我的整个文件
cp.php
<?php
require_once "phpwebdriver/WebDriver.php";
$length = 2;
$str = '';
for ($x = 0; $x <= 5; $x++) {
$randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 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();
?>
答案 0 :(得分:2)
我不是PHP编码器,所以我希望这一切都是正确的。我不是100%清楚你正在使用哪个PHP Selenium包装器,这肯定会有所帮助。我将使用https://github.com/facebook/php-webdriver编写其中一些示例。
当你这样做时:
$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender");
if ($gender) {
$gender->click("xpath=(//input[@name='gender'])[2]");
}
你只是给它第一个单选按钮实例。然后你试图传递一个你不能将变量传递给的点击事件。 Click是一个函数,但没有任何参数。
如果您想要一些随机生成的按钮,您可以执行以下操作:
$gender = $webdriver->findElementsBy(LocatorStrategy::name,"gender");
if (rand() % 2 == 0) {
$gender[0]->click();
}else{
$gender[1]->click();
}
你会注意到一个微小的区别,我正在使用FindElement s By()和多个元素,它们会在页面和商店中抓取所有这些内容他们在阵列中。
我不是100%确定数组如何使用php版本,但是这样的东西应该适合你。