I'm trying to select a textarea wrapped in angular js using selenium, but it can't be seen in DOM. There's a module called Pytractor (https://pypi.python.org/pypi/pytractor/0.0.1) I've been trying to use to solve this but I'm unable to use it correctly.
Can anyone help me with this?
You can also use regular selenium bindings to test AngularJS applications. You would need to use Explicit Waits to wait for elements to appear, disappear, title/url to change etc - for any actions that would let you continue with testing the page.
Example (waiting for
textarea element to appear):
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) wait.until(EC.visibility_of_element_located((By.TAG_NAME, "myaccount")))
There is one important thing that
protractor itself) provides - it knows when
AngularJS is settled and ready - models are updated, there are no outstanding async requests etc. It doesn't mean you have to use it to test
AngularJS applications, but it gives you an advantage.
pytractor provides you with new locators, e.g. you can find an element by model or binding. It also doesn't mean you cannot find the same element using other location techniques which regular selenium python provides out-of-the-box.
pytractor is not actively developed and maintained at the moment.