我使用Selenium驱动程序。我对这个硒世界很陌生。
我有两个无线电选项

<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();
?>发布于 2016-03-26 21:21:09
我不是一个PHP编码器,所以我希望这一切都是正确的。我不完全清楚您在使用哪个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();
}您会注意到一个很小的区别,我使用的是FindElementsBy()和一个复数的元素,它表示在页面上抓取所有这些元素并将它们存储在一个数组中。
我并不100%确定数组如何与php版本一起工作,但是类似的东西应该适用于您。
https://stackoverflow.com/questions/36239795
复制相似问题