Objective
Background: Do WAP page automation, the URL address directly into the browser (Chrome browser has a mobile phone WAP mode) on the test, there is a button alive and dead Point, with the WAP mode touch event can not be solved, and then want to use jquery to perform the click.
Found reported $ is not defined.
# Coding:utf-8# Shanghai-LeisurelyImport timeFrom Selenium.webdriver.chrome.optionsImport OptionsFrom seleniumImport WebdriverFrom Selenium.webdriver.common.touch_actionsimport touchactionsurl= "http://xxx" # URL address omitted mobile_emulation = { "DeviceName": " IPhone 6 "} # set WAP mode options=options () options.add_experimental_option ( Span class= "hljs-string" > "mobileemulation", Mobile_emulation) driver=webdriver. Chrome () driver.set_window_size (400, 800) driver.get (URL) Time.sleep (3) El=driver.find_element_by_xpath ( "//*[text () = ' To pay for '] ") touchactions (Driver). Tap (EL). Perform () # Touch event # Execute Jquery# JQ = "$ ('. Btn ')." Click (); " # driver.execute_script (JQ)
Careful examination of the grammar, found that the syntax is not a problem, directly on the browser to execute, but also to perform successfully. Results various attempts jquery Different click Method, finally cannot solve. Later changed to JS Grammar is done.
Encounter problems
1. When executing the jquery script, error:
Selenium.common.exceptions.WebDriverException:Message:unknown Error: $ is not defined
2. Some of the following methods have been tried in the future without effect:
$ ('. Btn '). Trigger (' click ')
$ ('. btn '). EQ (0). Trigger (' click ')
JS Solution
1. I later communicated with the great God who understood jquery, because I was visiting a WAP page
2. There are many H5 pages, the front-end development of the framework if the use of Vue, with $ will not work, so this method does not work, and then use JS to solve the
# coding:utf-8from selenium.webdriver.chrome.options import Optionsfrom selenium import webdriverurl = "https://www.xxx.xxx/" # url地址省略driver=webdriver.Firefox()driver.set_window_size(400, 800) # 设置窗口大小driver.get(url)# 执行jsjs = ‘document.getElementsByClassName("btn")[0].click();‘driver.execute_script(js)
Selenium+python Automation 96-Execution of the jquery report: $ is not defined