<?php declare(strict_types=1);
namespace Pom\Utils;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\WebDriverElement;
use Facebook\WebDriver\Remote\LocalFileDetector;
use Facebook\WebDriver\WebDriverSelect;
use Facebook\WebDriver\Remote\RemoteWebElement;
use phpDocumentor\Reflection\Types\Boolean;
class PhpWebDriverExamples
{
protected $driver;
protected $el;
protected $els;
protected $internalBool;
/**
* @return \phpDocumentor\Reflection\Types\Boolean
*/
public function getInternalBool()
{
return $this->internalBool;
}
/**
* @param \phpDocumentor\Reflection\Types\Boolean $internalBool
*/
public function setInternalBool($internalBool)
{
$this->internalBool = $internalBool;
}
public function __construct(RemoteWebDriver $driver){
$this->driver = $driver;
$this->internalBool = new Boolean();
$isThisRightOrWrong = "I have no idea";
$a = "hello";
$b = 1;
$c = $a + $b;
}
/**
* @param String $findBy
* @param string $locator
* @return WebDriverElement
*/
public function getWebElement(String $findBy, string $locator):WebDriverElement
{
switch($type)
{
case "xpath":
$by = WebDriverBy::xpath($locator);
break;
case "cssSelector":
$by = WebDriverBy::cssSelector($locator);
break;
case "name":
$by = WebDriverBy::name($locator);
break;
case "id":
$by = WebDriverBy::id($locator);
break;
case "linktext":
$by = WebDriverBy::linkText($locator);
break;
case "partiallinktext":
$by = WebDriverBy::partialLinkText($locator);
break;
case "tagname":
$by = WebDriverBy::tagName($locator);
break;
case "classname":
$by = WebDriverBy::className($locator);
break;
default:
break;
}
$el = $this->driver->findElement($by);
if ($el != null){
return $el;
} else return null;
}
/**
* @param string $type
* @param string $locator
*/
public function getWebElements(string $type, string $locator){
switch($type)
{
case "xpath":
$by = WebDriverBy::xpath($locator);
break;
case "cssSelector":
$by = WebDriverBy::cssSelector($locator);
break;
case "name":
$by = WebDriverBy::name($locator);
break;
case "id":
$by = WebDriverBy::id($locator);
break;
case "linktext":
$by = WebDriverBy::linkText($locator);
break;
case "partiallinktext":
$by = WebDriverBy::partialLinkText($locator);
break;
case "tagname":
$by = WebDriverBy::tagName($locator);
break;
case "classname":
$by = WebDriverBy::className($locator);
break;
default:
break;
}
$els = $this->driver->findElements($by);
}
private function get_InputTextBox():WebDriverElement{
return $this->getWebElement('xpath', '//input[starts-with[@id,"")]');
}
/**
* @param string $text
*/
public function type_InputTextBox(string $text){
$this->get_InputTextBox()->sendKeys($text);
}
private function get_TextArea():WebDriverElement{
return $this->getWebElement('xpath', '//textarea[starts-with[@id,"")]');
}
public function type_TextArea(string $text){
$this->get_TextArea()->sendKeys($text);
}
private function get_InputButton():WebDriverElement{
return $this->getWebElement('xpath', '//input[starts-with[@id,"")]');
}
public function click_InputButton(){
$this->get_InputButton()->click();
}
private function get_Button():WebDriverElement{
return $this->getWebElement('xpath', '//button[starts-with[@id,"")]');
}
public function click_Button(){
$this->get_Button()->click();
}
public function click_Button(){
$this->get_Button()->click();
}
private function get_IFrame():WebDriverElement{
return $this->getWebElement('xpath', '//iframe[starts-with[@id,"")]');
}
private function type_Body(string $bodyText):WebDriverElement{
$this->driver->switchTo()->frame($this->get_IFrame());
$this->driver->executeScript("document.getElementByTagName('body)[0].innerText = '" . $bodyText . "';");
$this->driver->switchTo()->defaultContent();
}
public function click_Button(){
$this->get_Button()->click();
}
private function get_Checkbox():WebDriverElement{
return $this->getWebElement('xpath', '//input[starts-with[@id,"")]');
}
public function click_Checkbox(bool $enabled){
if($this->get_Checkbox()->isSelected() == !$enabled){
$this->get_Checkbox()->click();
}
$this->get_Checkbox()->click();
}
public function type_FileName():WebDriverElement{
$fileInput = $this->driver->findElement(WebDriverBy::id(''));
$fileInput->setFileDetector(new LocalFileDetector());
$fileInput->sendKeys('T:\filename');
}
private function get_MultipleField(int $num):WebDriverElement{
return $this->getWebElement('xpath', '//input[starts-with[@id,"'.$num.'")]');
}
public function type_MultipleField(int $num, string $text){
$this->get_MultipleField($num)->clear()->sendKeys($text);
}
private function get_ExpandCollapse():WebDriverElement{
return $this->getWebElement('xpath', '//input[starts-with[@id,"")]');
}
public function click_ExpandCollapse(int $num, string $text){
if(($this->get_ExpandCollapse()->getAttribute("aria-expanded") =="false") && ($expanded))
{
$this->get_ExpandCollapse()->click();
}
}
private function get_Select():WebDriverElement{
return $this->getWebElement('xpath', '//input[starts-with[@id,"")]');
}
public function select_Select(string $option){
try{
$select = new WebDriverSelect($this->get_Select());
$select->selectByVisibleText($option);
} catch (\Exception $e ){
}
}
// private function get_SelectOptions():WebDriverElement{}
// private function get_SelectText():WebDriverElement{}
public function ScrollToTop():WebDriverElement{
$this->driver->executeScript('window.scrollTo(0,document.body.scrollTop);');
}
private function ScrollToBottom():WebDriverElement{
$this->driver->executeScript("window.scrollTo(0,document.body.scrollHeight);");
}
// private function actionScrollToElement():WebDriverElement{}
}
- Log in to post comments
Tags
