首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择Selenium PHP驱动程序上的随机无线电按钮

选择Selenium PHP驱动程序上的随机无线电按钮
EN

Stack Overflow用户
提问于 2016-03-26 19:20:21
回答 1查看 1K关注 0票数 0

我使用Selenium驱动程序。我对这个硒世界很陌生。

我有两个无线电选项

代码语言:javascript
复制
<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>

选择定位器

代码语言:javascript
复制
$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender");
if ($gender) {
    $gender->click("xpath=(//input[@name='gender'])[2]");
}

我似乎无法让它点击我的第二个选项。

我错过了什么吗?

这是我的全部文件

cp.php

代码语言:javascript
复制
<?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();

?>
EN

回答 1

Stack Overflow用户

发布于 2016-03-26 21:21:09

我不是一个PHP编码器,所以我希望这一切都是正确的。我不完全清楚您在使用哪个PHP Selenium包装器,这肯定会有帮助。我将使用https://github.com/facebook/php-webdriver编写这些示例中的一些。

当你这样做时:

代码语言:javascript
复制
$gender = $webdriver->findElementBy(LocatorStrategy::name,"gender");
if ($gender) {
    $gender->click("xpath=(//input[@name='gender'])[2]");
}

你只会给它单选按钮的第一个实例。然后尝试传递一个无法传递变量的click事件。单击是一个函数,但没有任何参数。

如果您想要一个随机生成的按钮,您可以这样做:

代码语言:javascript
复制
$gender = $webdriver->findElementsBy(LocatorStrategy::name,"gender");
if (rand() % 2 == 0) {
    $gender[0]->click();
}else{
    $gender[1]->click();
}

您会注意到一个很小的区别,我使用的是FindElementsBy()和一个复数的元素,它表示在页面上抓取所有这些元素并将它们存储在一个数组中。

我并不100%确定数组如何与php版本一起工作,但是类似的东西应该适用于您。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36239795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档