{"id":10074,"date":"2014-08-17T12:17:00","date_gmt":"2014-08-17T12:17:00","guid":{"rendered":"http:\/\/162.243.59.116\/2014\/08\/17\/protractor-vs-selenium-which-is-easier\/"},"modified":"2020-07-13T18:40:07","modified_gmt":"2020-07-13T18:40:07","slug":"protractor-vs-selenium-which-is-easier","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/","title":{"rendered":"Protractor vs. Selenium: Which is easier for testing?"},"content":{"rendered":"<p>So, is <a href=\"https:\/\/www.protractortest.org\/#\/\" target=\"_blank\" rel=\"noopener noreferrer\">Protractor<\/a> easier than <a href=\"https:\/\/www.seleniumhq.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Selenium<\/a>?<\/p>\n<p>Yes!<\/p>\n<p>In this blog post, I&#8217;ll give you a taste of why you\u2019d benefit from using <a href=\"https:\/\/github.com\/angular\/protractor\">Protractor<\/a> for your JavaScript tests instead of using <a href=\"https:\/\/www.seleniumhq.org\/projects\/webdriver\/\" target=\"_blank\" rel=\"noopener noreferrer\">Selenium <\/a>webdriver directly, even if your app has nothing to do with <a href=\"https:\/\/en.wikipedia.org\/wiki\/AngularJS\" target=\"_blank\" rel=\"noopener noreferrer\">AngularJS<\/a> yet &#8211; or just a partial usage.&nbsp;<!--more--><\/p>\n<p><!-- more --><\/p>\n<p>If you peek inside Protractor you\u2019ll see the good old Selenium Web Driver (aka <a href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/wiki\/WebDriverJs\" target=\"_blank\" rel=\"noopener noreferrer\">WebDriverJS<\/a> aka <a href=\"https:\/\/www.npmjs.com\/package\/selenium-webdriver\" target=\"_blank\" rel=\"noopener noreferrer\">selenium-webdriver<\/a>).<\/p>\n<p>Protractor is essentially a wrapper for the JavaScript Selenium webdriver. Therefore \u2013 you get all the capabilities of the webdriver \u2013 along with a number of very useful additions.<\/p>\n<h3><strong>Oh \u2013 so they probably added some Angular stuff \u2013 right?<\/strong><\/h3>\n<p>Yes!<\/p>\n<p>They added accessors to angular <code>models<\/code>, <code>bindings<\/code>, <code>ng-options<\/code> \u2013 and finding elements inside <code>ng-repeat<\/code>. These additions make querying for elements much easier. For example \u2013 let\u2019s get all the ages of the cats that the repeater adds:<\/p>\n<pre><code>\n&lt;div ng-repeat=\"cat in pets\"&gt;\n    &lt;span&gt;{{cat.name}}&lt;\/span&gt;\n    &lt;span&gt;{{cat.age}}&lt;\/span&gt;\n&lt;\/div&gt;\n\n\/\/ test code:\n\/\/ ---------\n\/\/ Returns a promise that resolves to an array of\n\/\/ WebElements from a column\nvar ages = element.all(\n    by.repeater('cat in pets').column('{{cat.age}}'));\n<\/code><\/pre>\n<p>Ever struggled with the challenge of determining when the page is truly ready, i.e. all the asynchronously fetched resources are ready and processed? Check out <code>waitForAngular<\/code> that does exactly that.<\/p>\n<h3><strong>But I don\u2019t use Angular yet \u2013 should I keep reading?<\/strong><\/h3>\n<p>Yes!<\/p>\n<p>They added other goodies \u2013 accessors (locators) by button text, partial button text \u2013 and the very cool option to find by a combination of CSS and text (get me all the divs with class \u2018pet\u2019 and text &#8216;dog\u2019).<\/p>\n<p>Also \u2013 they added the <code>addLocator<\/code> function to help you add your own locators \u2013 so that, for a fictional example, you can get elements by their handlebars properties.<\/p>\n<h3><strong>But I\u2019m already using Selenium extensively<\/strong><\/h3>\n<p>First of all, pat yourself on the back \u2013 you\u2019re already in better shape than most teams out there. You can install Protractor and use it with your existing infrastructure. Simply configure Protractor to operate against your Selenium servers.<\/p>\n<p><strong>Please note:<\/strong> You\u2019ll have to take some additional steps to run Protractor successfully on non-Angular pages. We will cover this issue in the next post.<\/p>\n<h3><strong>OK \u2013 please continue<\/strong><\/h3>\n<p>Ye\u2026 oh \u2013 great, let\u2019s see now:<\/p>\n<p>One more addition that makes life easier for users is globals.<\/p>\n<p>Protractor adds these objects to the global namespace: <code>browser<\/code>, <code>element<\/code> and <code>by<\/code>. Now go ahead and spot the difference between the two canonical examples:<\/p>\n<p>Protractor (9 lines of code, not including the comments):<\/p>\n<pre><code>\n\/\/ starting right here with two Jasmine lines.\n\/\/ All the rest is preconfigured separately and very easily.\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"s1\">'angularjs homepage'<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"s1\">'should add one and two'<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n        \/\/ Just go ahead and use the webdriver \u2013 the configuration\n        \/\/ took care of the initialization\n        <span class=\"nx\">browser<\/span><span class=\"p\">.<\/span><span class=\"nx\">get<\/span><span class=\"p\">(<\/span><span class=\"s1\">'http:\/\/juliemr.github.io\/protractor-demo\/'<\/span><span class=\"p\">);<\/span>\n        \/\/ much shorter than driver.findElement\u2026 webdriver.By\u2026\n        <span class=\"nx\">element<\/span><span class=\"p\">(<\/span><span class=\"nx\">by<\/span><span class=\"p\">.<\/span><span class=\"nx\">model<\/span><span class=\"p\">(<\/span><span class=\"s1\">'first'<\/span><span class=\"p\">)).<\/span><span class=\"nx\">sendKeys<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n        <span class=\"nx\">element<\/span><span class=\"p\">(<\/span><span class=\"nx\">by<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"p\">(<\/span><span class=\"s1\">'gobutton'<\/span><span class=\"p\">)).<\/span><span class=\"nx\">click<\/span><span class=\"p\">();<\/span>\n        \/\/ please appreciate how naturally\n        \/\/ expect works with this flow\n        <span class=\"nx\">expect<\/span><span class=\"p\">(<\/span><span class=\"nx\">element<\/span><span class=\"p\">(<\/span><span class=\"nx\">by<\/span><span class=\"p\">.<\/span><span class=\"nx\">binding<\/span><span class=\"p\">(<\/span><span class=\"s1\">'latest'<\/span><span class=\"p\">)).<\/span><span class=\"nx\">getText<\/span><span class=\"p\">()).<\/span>\n             toEqual('3');\n    });\n});\n<\/code><\/pre>\n<p>Selenium (17, longer, lines of code, not including the comments):<\/p>\n<pre><code>\n\/\/ Defining some requirements \u2013 to be able to use assertions\n\/\/ and test syntax\nvar assert = require('assert'),\n    test = require('selenium-webdriver\/testing'),\n    webdriver = require('selenium-webdriver');\n\n\/\/ Now we can write a test\ntest.describe('Google Search', function() {\n    test.it('should work', function() {\n        \/\/ We need to setup the webdriver\u2026\n        var driver = new webdriver.Builder().\n            withCapabilities(webdriver.Capabilities.chrome()).\n            build();\n\n        \/\/ finally we can actually do something\n        driver.get('http:\/\/www.google.com');\n        \/\/ all the functions are accessed via driver of webdriver.\n        \/\/ Much typing!\n        driver.findElement(webdriver.By.name('q'))\n            .sendKeys('webdriver');\n        driver.findElement(webdriver.By.name('btnG')).click();\n        \/\/ spoon-feeding the assertion using then\n        \/\/ and resolving the value\n        driver.getTitle().then(function(title) {\n            assert.equal(title, 'webdriver - Google Search');\n        });\n    \n        \/\/ calling this ourselves\n        driver.quit();\n    });\n});\n\n<\/code><\/pre>\n<h3><strong>More! I want moar!!!<\/strong><\/h3>\n<p>Sure, why not?<\/p>\n<p>Starting to work with Protractor is a breeze. You get the <a href=\"https:\/\/jasmine.github.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Jasmine test library<\/a> out of the box \u2013 with a bonus patch to the &#8216;expect\u2019 function to easily provide validation through assertion. You get <a href=\"https:\/\/www.npmjs.com\/package\/webdriver-manager\" target=\"_blank\" rel=\"noopener noreferrer\">webdriver-manager<\/a> to take care of the local webdriver server for you and make it easy to test against a remote server. You don\u2019t have to run your tests directly as scripts using node \u2013 as your initial attempts with Selenium will have you do.<\/p>\n<p>This brings us to another point \u2013 Protractor has much better documentation, in my opinion. For example, here is the <a href=\"https:\/\/www.protractortest.org\/#\/tutorial\" target=\"_blank\" rel=\"noopener noreferrer\">tutorial for Protractor<\/a>. Not bad, right?<\/p>\n<h3><strong>In Conclusion&#8230;<\/strong><\/h3>\n<p>Protractor is neat \u2013 and I see it as a very useful evolution from Selenium Webdriver for JavaScript.<\/p>\n<p>It\u2019s not limited to testing only AngularJS apps \u2013 even though these two are usually mentioned together. However &#8211; it was designed mainly for Angular and some work is required, at least currently, to use it on non-angular pages. We will review this in the next post. If you plan to gradually move your site\/app to Angular &#8211; you can start writing your Protractor E2E tests right now &#8211; and I will show you how.<\/p>\n<p>If you\u2019re already using Angular, there\u2019s a bunch of guides out there that will help you get started with Protractor \u2013 and I intend to provide more information in future posts.<\/p>\n<p><span style=\"font-weight: 400;\">To read more about Applitools\u2019 visual UI testing and<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/downloads\/The_Rise_of_AVM_Applitools_June_18_2018.pdf?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=protractor-vs-selenium-which-is-easier\"> <span style=\"font-weight: 400;\">Application Visual Management<\/span><\/a><span style=\"font-weight: 400;\"> (AVM) solutions, check out the<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/resources?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=protractor-vs-selenium-which-is-easier\"> <span style=\"font-weight: 400;\">resources<\/span><\/a><span style=\"font-weight: 400;\"> section on the Applitools website. To get started with Applitools, request a<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/request-demo?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=protractor-vs-selenium-which-is-easier\"> <span style=\"font-weight: 400;\">demo<\/span><\/a><span style=\"font-weight: 400;\"> or<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/users\/register?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=protractor-vs-selenium-which-is-easier\"> <span style=\"font-weight: 400;\">sign up<\/span><\/a><span style=\"font-weight: 400;\"> for a free Applitools account.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, is Protractor easier than Selenium? Yes! In this blog post, I&#8217;ll give you a taste of why you\u2019d benefit from using Protractor for your JavaScript tests instead of using&#8230;<\/p>\n","protected":false},"author":11,"featured_media":10208,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10004],"tags":[10353,12830,12691,10085,10120,10139],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Protractor vs. Selenium: Which is easier for testing? - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"So, is Protractor easier than Selenium? Yes! In this blog post, I&#8217;ll give you a taste of why you\u2019d benefit from using Protractor for your JavaScript tests instead of using...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Protractor vs. Selenium: Which is easier for testing?\" \/>\n<meta property=\"og:description\" content=\"So, is Protractor easier than Selenium? Yes! In this blog post, I&#039;ll give you a taste of why you\u2019d benefit from using Protractor for your JavaScript tests\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2014-08-17T12:17:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-13T18:40:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"198\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Doron Zavelevsky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Doron Zavelevsky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\"},\"author\":{\"name\":\"Doron Zavelevsky\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/379eaf5c7fe2f9f28a23314d09aa6adb\"},\"headline\":\"Protractor vs. Selenium: Which is easier for testing?\",\"datePublished\":\"2014-08-17T12:17:00+00:00\",\"dateModified\":\"2020-07-13T18:40:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\"},\"wordCount\":663,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png\",\"keywords\":[\"Angular\",\"Code Snippets\",\"Developers\",\"Javascript\",\"Protractor\",\"Selenium\"],\"articleSection\":[\"Advanced Topics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\",\"name\":\"Protractor vs. Selenium: Which is easier for testing? - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png\",\"datePublished\":\"2014-08-17T12:17:00+00:00\",\"dateModified\":\"2020-07-13T18:40:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png\",\"width\":500,\"height\":198,\"caption\":\"Protractor vs Selenium\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Topics\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Protractor vs. Selenium: Which is easier for testing?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"name\":\"Applitools Visual AI\",\"description\":\"Applitools delivers full end-to-end test automation with AI infused at every step.\",\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/379eaf5c7fe2f9f28a23314d09aa6adb\",\"name\":\"Doron Zavelevsky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec518f164728b4acca45b6a60e179b2c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec518f164728b4acca45b6a60e179b2c?s=96&d=mm&r=g\",\"caption\":\"Doron Zavelevsky\"},\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/doronzavelevsky\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Protractor vs. Selenium: Which is easier for testing? - AI-Powered End-to-End Testing | Applitools","description":"So, is Protractor easier than Selenium? Yes! In this blog post, I&#8217;ll give you a taste of why you\u2019d benefit from using Protractor for your JavaScript tests instead of using...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/","og_locale":"en_US","og_type":"article","og_title":"Protractor vs. Selenium: Which is easier for testing?","og_description":"So, is Protractor easier than Selenium? Yes! In this blog post, I'll give you a taste of why you\u2019d benefit from using Protractor for your JavaScript tests","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2014-08-17T12:17:00+00:00","article_modified_time":"2020-07-13T18:40:07+00:00","og_image":[{"width":500,"height":198,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png","type":"image\/png"}],"author":"Doron Zavelevsky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Doron Zavelevsky","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/"},"author":{"name":"Doron Zavelevsky","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/379eaf5c7fe2f9f28a23314d09aa6adb"},"headline":"Protractor vs. Selenium: Which is easier for testing?","datePublished":"2014-08-17T12:17:00+00:00","dateModified":"2020-07-13T18:40:07+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/"},"wordCount":663,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png","keywords":["Angular","Code Snippets","Developers","Javascript","Protractor","Selenium"],"articleSection":["Advanced Topics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/","name":"Protractor vs. Selenium: Which is easier for testing? - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png","datePublished":"2014-08-17T12:17:00+00:00","dateModified":"2020-07-13T18:40:07+00:00","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2014\/08\/ProtractorVSSelenium.png","width":500,"height":198,"caption":"Protractor vs Selenium"},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/protractor-vs-selenium-which-is-easier\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Advanced Topics","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/"},{"@type":"ListItem","position":3,"name":"Protractor vs. Selenium: Which is easier for testing?"}]},{"@type":"WebSite","@id":"https:\/\/app14743.cloudwayssites.com\/#website","url":"https:\/\/app14743.cloudwayssites.com\/","name":"Applitools Visual AI","description":"Applitools delivers full end-to-end test automation with AI infused at every step.","publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/app14743.cloudwayssites.com\/#organization","name":"Applitools","url":"https:\/\/app14743.cloudwayssites.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/379eaf5c7fe2f9f28a23314d09aa6adb","name":"Doron Zavelevsky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec518f164728b4acca45b6a60e179b2c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec518f164728b4acca45b6a60e179b2c?s=96&d=mm&r=g","caption":"Doron Zavelevsky"},"url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/doronzavelevsky\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/10074"}],"collection":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=10074"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/10074\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/10208"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=10074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=10074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=10074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}