How to use page_source method of Selenium.WebDriver.Remote Package

Best Selenium code snippet using Selenium.WebDriver.Remote.page_source

app_spec.rb

Source:app_spec.rb Github

copy

Full Screen

...10 include AppSpecHelpers11 include DataFieldSpecHelpers12 it 'should open extension' do13 open_extension('text', 'Test')14 expect(@driver.page_source.include?('Sign In')).to be(true)15 expect(@driver.page_source.include?('Iniciar uma sessão')).to be(false)16 end17 it 'should localize' do18 open_browser 'pt'19 open_extension('text', 'Test')20 expect(@driver.page_source.include?('Sign In')).to be(false)21 expect(@driver.page_source.include?('Iniciar sessão')).to be(true)22 open_browser 'en'23 end24 it 'should login' do25 # Create user and confirm account26 email = "test-#{Time.now.to_i}@test.com"27 request_api 'user', { name: 'Test', email: email, password: '12345678', password_confirmation: '12345678', provider: '' }28 request_api 'confirm_user', { email: email }29 # Open extension and assert that the user is not logged in30 open_extension('text', 'Test')31 expect(@driver.window_handles.size == 1).to be(true)32 expect(@driver.page_source.include?('sign in')).to be(true)33 # Click on "sign in" and make sure that a new window is opened34 wait_for_selector('#login-button').click35 sleep 336 expect(@driver.window_handles.size == 2).to be(true)37 window = @driver.window_handles.last38 @driver.switch_to.window(window)39 # Login, create a team and create a project40 @driver.navigate.to "#{@config['check_api_url']}/test/session?email=#{email}"41 team = request_api 'team', { name: "Test Team #{Time.now.to_i}", email: email }42 team_id = JSON.parse(team.body)['data']['dbid']43 request_api 'project', { title: "Test Project #{Time.now.to_i}", team_id: team_id }44 @driver.close if @driver.respond_to?(:close)45 # Go back to the extension and make sure that user is logged in46 window = @driver.window_handles.first47 @driver.switch_to.window(window)48 @driver.navigate.refresh49 wait_for_selector('#save-button')50 expect(@driver.page_source.include?('sign in')).to be(false)51 end52 it 'should create media' do53 login(media_type: 'url', media_content: 'https://meedan.com')54 wait_for_selector("//span[contains(text(), 'Link URL')]", :xpath)55 expect(@driver.page_source.include?('Saved!')).to be(false)56 wait_for_selector('#save-button').click57 wait_for_selector('#media')58 expect(@driver.page_source.include?('Saved!')).to be(true)59 expect(@driver.page_source.include?('Media')).to be(true)60 expect(@driver.page_source.include?('Meedan')).to be(true)61 expect(@driver.page_source.include?('@meedan')).to be(true)62 expect(@driver.page_source.include?('https://meedan.com')).to be(true)63 # verify that the team doesn't have task and metadata64 @driver.switch_to.default_content65 wait_for_selector("//span[contains(text(), 'Tasks')]", :xpath).click66 @driver.switch_to.frame 'check-web-frame'67 wait_for_selector("//span[contains(text(), 'No tasks')]", :xpath)68 expect(@driver.page_source.include?('No tasks')).to be(true)69 @driver.switch_to.default_content70 wait_for_selector("//span[contains(text(), 'Annotation')]", :xpath).click71 wait_for_selector("//span[contains(text(), 'No metadata fields')]", :xpath)72 expect(@driver.page_source.include?('No metadata fields')).to be(true)73 end74 it 'should create media from a profile URL' do75 login(media_type: 'url', media_content: "#{@profile_url}/?t=#{Time.now.to_f}")76 wait_for_selector("//span[contains(text(), 'Link URL')]", :xpath)77 expect(@driver.page_source.include?('Saved!')).to be(false)78 wait_for_selector('#save-button').click79 wait_for_selector('#media')80 expect(@driver.page_source.include?(@profile_url)).to be(true)81 expect(@driver.page_source.include?('Title')).to be(true)82 end83 it 'should manage a team task' do84 login(media_type: 'text', media_content: 'Test', data_field_name: 'tasks')85 wait_for_selector("//span[contains(text(), 'Text claim')]", :xpath)86 expect(@driver.page_source.include?('Saved!')).to be(false)87 wait_for_selector('#save-button').click88 wait_for_selector("//p[contains(text(), 'Saved')]", :xpath)89 expect(@driver.page_source.include?('Saved!')).to be(true)90 wait_for_selector("//span[contains(text(), 'Tasks')]", :xpath).click91 @driver.switch_to.frame 'check-web-frame'92 wait_for_selector('#task__response-input')93 expect(@driver.page_source.include?('Team-task')).to be(true)94 # Answer task95 answer_data_field('answer')96 wait_for_selector("//span[contains(text(), 'Completed by')]", :xpath)97 expect(@driver.page_source.include?('Completed by')).to be(true)98 expect(@driver.page_source.include?('answer')).to be(true)99 # Edit task answer100 edit_data_field_response('-edited')101 expect(@driver.page_source.include?('answer-edited')).to be(true)102 # Delete task answer103 delete_data_field_response104 expect(@driver.page_source.include?('answer-edited')).to be(false)105 # delete task106 delete_data_field107 expect(@driver.page_source.include?('Team-task')).to be(false)108 expect(@driver.page_source.include?('No tasks')).to be(true)109 end110 it 'should add, edit and delete a metadata response' do111 login(media_type: 'text', media_content: 'Test', data_field_name: 'metadata')112 wait_for_selector("//span[contains(text(), 'Text claim')]", :xpath)113 expect(@driver.page_source.include?('Saved!')).to be(false)114 wait_for_selector('#save-button').click115 wait_for_selector("//p[contains(text(), 'Saved')]", :xpath)116 expect(@driver.page_source.include?('Saved!')).to be(true)117 wait_for_selector("//span[contains(text(), 'Annotation')]", :xpath).click118 wait_for_selector('#metadata-input')119 expect(@driver.page_source.include?('Team-metadata')).to be(true)120 # answer the metadata121 answer_data_field_metadata('answer')122 expect(@driver.page_source.include?('answer')).to be(true)123 # edit response124 wait_for_selector_none('#metadata-input')125 edit_data_field_response_metadata('-edited')126 expect(@driver.page_source.include?('answer-edited')).to be(true)127 # delete response128 delete_data_field_response_metadata129 expect(@driver.page_source.include?('answer-edited')).to be(false)130 end131end132describe 'app' do133 @driver = @config = nil134 before :all do135 @config = YAML.load_file('config.yml')136 end137 before :each do138 open_browser139 end140 after :each do |example|141 if example.exception142 link = save_screenshot("Test failed: #{example.description}")143 puts "[Test #{example.description} failed! Check screenshot at #{link}]"...

Full Screen

Full Screen

forage_wgtong.rb

Source:forage_wgtong.rb Github

copy

Full Screen

...29 current_run_key.simples.where(is_processed: 'n').each do |simple|30 begin31 detail_page = driver.navigate.to simple.url32 sleep(2)33 detail_doc = Nokogiri::HTML(driver.page_source)34 detail_title = detail_doc.xpath("//div[@class='mod1']/h1").text35 detail_description = detail_doc.xpath("//div[@class='mod1']/div[@class='info']").text36 detail_content = detail_doc.xpath("//div[@class='mod1']/div[@class='read']/div[@class='TRS_Editor']")37 detail_content_style = detail_content.first.css('style').to_html38 detail_content = detail_content.to_html.gsub(detail_content_style, '')39 forage_detail = simple.details.find_or_initialize_by(url: simple.url)40 forage_detail.title = detail_title41 forage_detail.description = detail_description42 forage_detail.content = detail_content43 forage_detail.save44 simple.is_processed = 'y'45 rescue => e46 puts e.message47 simple.is_processed = 'f'48 end49 simple.save!50 end51 driver.quit52 headless.destroy53 end54 def gov_zixun_simple(current_run_key)55 puts "extract #{current_run_key.source.name} simple"56 headless = Headless.new57 headless.start58 profile = Selenium::WebDriver::Firefox::Profile.new59 client = Selenium::WebDriver::Remote::Http::Default.new60 client.read_timeout = 30061 driver = Selenium::WebDriver.for :firefox, http_client: client62 main_url = current_run_key.source.url63 begin64 driver.navigate.to current_run_key.source.url65 sleep(2)66 main_doc = Nokogiri::HTML(driver.page_source)67 run_key_str = main_doc.xpath("//div[@class='mod1']//div[@class='tit']").first.text68 loop do69 content_doc_arr = main_doc.xpath("//div[@class='mod1']/div[@class='con']/ul/li")70 content_doc_arr.each do |simple_doc|71 # simple72 simple_title = simple_doc.css('a').text73 simple_url = main_url + simple_doc.css('a').first['href'].gsub(/^\.\//, '')74 simple_date = simple_doc.css('span').text75 forage_simple = current_run_key.simples.find_or_initialize_by(url: simple_url)76 forage_simple.title = simple_title77 forage_simple.save78 end79 next_page = main_doc.xpath("//div[@id='displaypagenum']/a[contains(text(), '下一页')]")80 if next_page.blank?81 break82 else83 next_page_url = main_url + next_page.first['href']84 driver.navigate.to next_page_url85 sleep(2)86 main_doc = Nokogiri::HTML(driver.page_source)87 end88 end89 current_run_key.update_attributes(is_processed: 'y')90 rescue => e91 current_run_key.update_attributes(is_processed: 'f')92 puts e.message93 end94 driver.quit95 headless.destroy96 end97 def forage_hdb98 source_name = '互动吧'99 source = Forage::Source.where(name: source_name).first100 source_url = source.url101 source.run_keys.where(is_processed: 'f').update_all(is_processed: 'n')102 current_run_key = source.run_keys.order("date asc").last103 # simple104 hdb_simple(current_run_key) if current_run_key && current_run_key.is_processed == 'n'105 # detail106 hdb_detail(current_run_key) if current_run_key107 end108 def hdb_detail(current_run_key)109 headless = Headless.new110 headless.start111 profile = Selenium::WebDriver::Firefox::Profile.new112 client = Selenium::WebDriver::Remote::Http::Default.new113 client.read_timeout = 300114 driver = Selenium::WebDriver.for :firefox, http_client: client115 current_run_key.simples.where(is_processed: 'f').update_all(is_processed: 'n')116 current_run_key.simples.where(is_processed: 'n').each do |simple|117 begin118 driver.navigate.to simple.url119 sleep(3)120 detail_page_doc = Nokogiri::HTML(driver.page_source)121 detail_title = detail_page_doc.xpath("//div[@class='detail_title']").text.strip122 address = detail_page_doc.xpath("//div[@class='detail_Attr']").text.gsub(/.*地点:/, '').strip123 image_url = detail_page_doc.xpath("//div[@class='content-body_head_l']/img").first["src"] unless detail_page_doc.xpath("//div[@class='content-body_head_l']/img").blank?124 content = detail_page_doc.xpath("//div[@id='dt_content']").first.try{to_html}125 times_arr = []126 detail_page_doc.xpath("//div[@class='detail_Time_t']").text.split(/\s*\n+\s*/).each do |time|127 next if time =~ /(:$|list\.)/ || time.strip.blank?128 times_arr << time129 end130 times = times_arr.join(', ')131 tickets = []132 detail_page_doc.xpath("//ul[@class='ticket tc_c_feiLi']/li").each do |ticket|133 tickets << ticket.text.strip.gsub(/\s+/, '-')134 end135 price = tickets.join(', ')136 forage_detail = simple.details.find_or_initialize_by(url: simple.url)137 forage_detail.title = detail_title138 forage_detail.time = times139 forage_detail.address_line1 = address140 forage_detail.price = price141 forage_detail.image = image_url142 forage_detail.content = content143 forage_detail.save144 simple.is_processed = 'y'145 rescue => e146 puts e.message147 simple.is_processed = 'f'148 end149 simple.save!150 end151 driver.quit152 headless.destroy153 end154 def hdb_simple(current_run_key)155 headless = Headless.new156 headless.start157 profile = Selenium::WebDriver::Firefox::Profile.new158 driver = Selenium::WebDriver.for :firefox159 begin160 driver.navigate.to current_run_key.source.url161 sleep(2)162 main_doc = Nokogiri::HTML(driver.page_source)163 i = 0164 loop do165 i += 1166 content_doc_arr = main_doc.xpath("//li[@class='find_main_li img find']")167 content_doc_arr.each do |simple_doc|168 # simple169 simple_url = simple_doc.css('h3/a').first["href"]170 simple_title = simple_doc.css('h3/a').text.strip171 forage_simple = current_run_key.simples.find_or_initialize_by(url: simple_url)172 forage_simple.title = simple_title173 forage_simple.save174 end175 next_page = main_doc.xpath("//div[@class='join_feny']/a[contains(text(), '下一页 ')]")176 if next_page.blank? || i > 200177 break178 else179 next_page_url = next_page.first['href']180 driver.navigate.to next_page_url181 sleep(2)182 main_doc = Nokogiri::HTML(driver.page_source)183 end184 end185 current_run_key.update_attributes(is_processed: 'y')186 rescue => e187 current_run_key.update_attributes(is_processed: 'f')188 raise e.message189 end190 driver.quit191 headless.destroy192 end193end194if $0 == __FILE__195 ForageWgtong.new.run196end...

Full Screen

Full Screen

empire.rb

Source:empire.rb Github

copy

Full Screen

...52 Headless.ly do53 results_count_string = nil54 caps = Selenium::WebDriver::Remote::Capabilities.firefox55 caps['acceptInsecureCerts'] = true56 page_source = nil57 @driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps58 begin59 @driver.navigate.to url60 @wait.until do61 begin62 page_source = @driver.page_source63 results_count = @driver.find_element(css: "div[data-test='results-count-greater-than-one']")64 results_count_string = results_count.text65 rescue Selenium::WebDriver::Error::NoSuchElementError => e66 # Are we on an empty results page?67 @driver.find_element(id: "results-container")68 end69 true70 end71 @driver.quit72 rescue Exception => e73 # Make sure we quit the browser even if we run into an exception we didn't anticipate74 @driver.quit75 raise e76 end77 if results_count_string78 puts "Found results_count_string: #{results_count_string}"79 results_count_match = results_count_string.match(/\s+of\s+([0-9,]+)\s+results/)80 return results_count_match[1].gsub(',', '').to_i81 else82 STDOUT.puts "Error searching for record limit"83 STDOUT.puts page_source.gsub("\n", " ")84 raise NoRecordLimitFoundError.new("No record limit found for URL")85 end86 end87 end88 end89 end90 end91end...

Full Screen

Full Screen

greenhouse.rb

Source:greenhouse.rb Github

copy

Full Screen

...8 def self.supports?(page)9 DOMAIN_REGEXP.match?(page)10 end11 def find(options = nil)12 page_source = download(page)13 gh_token = extract_token(page_source)14 count = if gh_token15 parse_json(download("https://boards-api.greenhouse.io/v1/boards/#{gh_token}/jobs"))['jobs'].count16 else17 extract_js(url)18 end19 count == 0 ? [] : count.times.map { |i| Posting.new("Greenhouse Stub #{i}") }20 end21 private22 def parse_json(doc)23 JSON.parse(doc)24 rescue JSON::ParseError => e25 raise Error, "failed to parse JSON: #{e}"26 end27 def extract_token(page_source)28 nok = parse(page_source)29 greenhouse_links = nok.css('a').map{|x|x.attr('href')}.select{|x|x.include?('greenhouse.io')}30 greenhouse_iframes = nok.css('iframe').map{|x|x.attributes['src'].value}.select{|x|x.include?('grnh.se')}31 if greenhouse_links.count > 032 token = greenhouse_links.first.match(/greenhouse.io\/([^\/]+)\//)[1]33 elsif greenhouse_iframes.count > 034 # FIXME: Catch errors35 parsed = URI.parse(FinalRedirectUrl.final_redirect_url(greenhouse_iframes.first))36 parsed.fragment = parsed.query = nil # get rid of the query string parameters37 token = parsed.to_s.split('boards.greenhouse.io/').last38 else39 begin40 token = nok.css('meta[property="og:url"]').attr('content').value.split('boards.greenhouse.io/').last41 if token.match(/https?:/)42 token = get_token_from_script_tag(nok)...

Full Screen

Full Screen

user_registration_test.rb

Source:user_registration_test.rb Github

copy

Full Screen

...45 'label_preferedProgrammingLanguage_data').text46 assert "true" == @driver.find_element(:id, 'label_acceptAdds_data').text47 @driver.save_screenshot("./target/nativeScreen02.png")48 puts "The source of current screen:"49 page_source = JSON.pretty_generate( @driver.page_source)50 write_to_file( page_source )51 #goto main screen52 @driver.find_element(:id, 'buttonRegisterUser').click53 end54 def setup55 caps = Selenium::WebDriver::Remote::Capabilities.android56 caps.version = "5"57 caps.platform = :linux58 caps.proxy = nil59 caps[:aut] = "io.selendroid.testapp:0.5.0-SNAPSHOT"60 caps[:locale]="de_DE"61 caps[:browserName]="selendroid"62 @driver = Selenium::WebDriver.for(63 :remote,64 :url => "http://localhost:5555/wd/hub",...

Full Screen

Full Screen

common.rb

Source:common.rb Github

copy

Full Screen

...12#caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {args: ["--user-agent=#{ua}", "window-size=1280x800"]})13client = Selenium::WebDriver::Remote::Http::Default.new14@driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps, http_client: client15@driver.navigate.to url16#html = @driver.page_source17sleep(1)18end19def query_click(css_selector)20 javascript_statement = %Q{document.querySelector("#{css_selector}").click()}21 @driver.execute_script(javascript_statement)22 sleep(1)23 self24end25def main26html = @driver.page_source27doc = Nokogiri::HTML.parse(html, nil, 'utf-8')28item_array = []29page_num = doc.css("#root > div > main > div > div > div.flex.justify-space-between > div:nth-child(2) > div > div.flex.justify-flex-end > div > ul > li:nth-last-child(2)").text30loop do31 doc = Nokogiri::HTML.parse(@driver.page_source, nil, 'utf-8')32 items_selectors = doc.css("#root > div > main > div > div > div.flex.justify-space-between > div:nth-child(2) > div > div.flex.wrap > div")33 items_selectors.each do |item_selector|34 query_click(item_selector.css_path + " > div > a")35 html = @driver.page_source36 doc2 = Nokogiri::HTML.parse(html, nil, 'utf-8')37 name = doc2.css("#stickyTop > div:nth-child(1)").text38 number = doc2.css("#root > div > main > div > div > div:nth-child(1) > div.flex.justify-center > div:nth-child(1) > div:nth-last-child(2) > div > span:nth-child(2) > span").text39 selling_price = doc2.css("#stickyTop > div:nth-child(3) > span > span:nth-child(1)").text40 url = @driver.current_url41 img = "https:" + doc2.css("#root > div > main > div > div > div:nth-child(1) > div.flex.justify-center > div:nth-child(1) > div:nth-child(2) > div > div.slider > div.slider-frame > ul > li.slider-slide.slide-visible > div > div > div > img").attribute("src").text42 item_array << [number, name, selling_price, url, img]43 @driver.navigate.back44 sleep(1)45 end46 node = Nokogiri::HTML.parse(@driver.page_source, nil, 'utf-8')47 p "success!"48 break if node.css("li.pagination-active").text == page_num49 query_click("li.next > a ")50end51 item_array52end53end54ActiveRecord::Base.default_timezone = :local55ActiveRecord::Base.logger = Logger.new(STDOUT)56ActiveRecord::Base.establish_connection(57 adapter: 'mysql2',58 host: 'localhost',59 username: 'root',60 password: '',...

Full Screen

Full Screen

empire_crawler.rb

Source:empire_crawler.rb Github

copy

Full Screen

...11 schedule_scrape(plan_id, url)12 return13 end14 end15 page_source = nil16 Headless.ly do17 caps = Selenium::WebDriver::Remote::Capabilities.firefox18 caps['acceptInsecureCerts'] = true19 @driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps20 begin21 @driver.navigate.to url22 @wait.until do23 @driver.find_element(css: "div[data-test='results-count-greater-than-one']")24 end25 page_source = @driver.page_source26 self.ssdb.set(url, sanitize_for_ssdb(page_source))27 schedule_scrape(plan_id, url)28 @driver.quit29 rescue Exception => e30 # Make sure we quit the browser even if we run into an exception we didn't anticipate31 @driver.quit32 raise e33 end34 end35 end36 def self.schedule_scrape plan_id, url37 STDOUT.puts("Enqueueing EmpireScraper with [#{plan_id}, #{url}]")38 Resque.push('scraper_empire', :class => 'Jobs::Scrapers::EmpireScraper', :args => [plan_id, url])39 end40 end...

Full Screen

Full Screen

browser.rb

Source:browser.rb Github

copy

Full Screen

...19 options.add_argument '--no-sandbox'20 options.add_argument '--disable-gpu'21 options22 end23 def page_source24 browser.page_source25 end26 def visit_page27 browser.navigate.to url28 end29end...

Full Screen

Full Screen

page_source

Using AI Code Generation

copy

Full Screen

1puts driver.find_element(tag_name: 'body').text2puts driver.find_elements(tag_name: 'body').map(&:text).join('3puts driver.find_element(tag_name: 'html').text4puts driver.find_elements(tag_name: 'html').map(&:text).join('5puts driver.execute_script("return document.documentElement.outerHTML")6puts driver.execute_script("return document.documentElement.innerText")

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Selenium automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful