php Facebook\WebDriver 库执行JS 滚动,选择元素判断元素是否存在
滚动到指定元素位置
//滚动到页码位置,把条数选为100条每页
$jsTo = 'arguments[0].scrollIntoView();';
$query = Facebook\WebDriver\WebDriverBy::cssSelector('#data2Wrap div.oc-table-pagination div.oc-pagination-wrapper div.ovui-select > div');
if ( $el = Account::getElementWait($this->driver, $query, 3) ) {
$this->msg('设置每页100条');
//页码选项100条
$this->driver->executeScript($jsTo, [$el]);
}获取页面中的一个元素
/**
* 获取页面中的一个元素
* @param RemoteWebDriver $driver
* @param WebDriverBy $query
* @param int $timeout
* @return RemoteWebElement|null
*/
public static function getElement(RemoteWebDriver $driver, WebDriverBy $query, int $timeout=30)
{
while ($timeout>0) {
try {
return $driver->findElement($query);
} catch (\Exception $e) {
$timeout--;
sleep(1);
}
}
return null;
}
/**
* 获取页面中的一个元素(等待), elementToBeClickable 参数表示一个可见可点击的元素
* @param RemoteWebDriver $driver
* @param WebDriverBy $query
* @param int $timeout
* @param string $condition \Facebook\WebDriver\WebDriverExpectedCondition::elementToBeClickable($query)
* @link https://php-webdriver.github.io/php-webdriver/latest/Facebook/WebDriver/WebDriverExpectedCondition.html
* @return RemoteWebElement|null
*/
public static function getElementWait(RemoteWebDriver $driver, WebDriverBy $query, int $timeout=30, $condition='elementToBeClickable')
{
try {
return $driver->wait($timeout, 1000)->until(
$condition instanceof \Facebook\WebDriver\WebDriverExpectedCondition ? $condition : \Facebook\WebDriver\WebDriverExpectedCondition::$condition($query)
);
} catch (\Exception $e) {
return null;
}
}版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1202.html
转载时须注明出处及本声明