一、TypeError:‘module’ object is not callable
解決方案:谷歌瀏覽器Chrome單詞C大寫,修改為webdriver.Chrome()
二、'chromedriver' executable needs to be in PATH.
問題原因:沒有chrome驅動,需要先下載chrome驅動,然后添加到環境變量中
解決方案:
1、訪問http://chromedriver.storage.googleapis.com/index.html,找到自己瀏覽器對應版本的chromedriver.exe下載(版本一定要下載對)
2、下載下來的文件解壓后放在chrome瀏覽器所在目錄
3、添加環境變量到PATH
注意:如果還是運行報錯,就在代碼中添加chromeDriver的路徑來檢測下版本是否正確:
如果直接添加路徑還報錯,就是驅動版本沒下載對;如果直接添加路徑正確,說明環境變量沒配置對
from selenium import webdriver url = "http://www.baidu.com" browser = webdriver.Chrome(executable_path="C:\\Users\\12717\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe") browser.get(url)
4、Selenium定位到元素點擊卻報錯:ElementClickInterceptedException:element click intercepted
網上搜索到了2種方式,我用第一種方式解決了
方式一:
element = driver.find_element_by_xpath("表達式")
driver.execute_script("arguments[0].click();", element)
方式二:
element = driver.find_element_by_xpath('表達式')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()
element = self.driver.find_element_by_xpath(//button[@data-test-id="add"]) driver.execute_script("arguments[0].click();", element)
5、selenium使用clear()函數無法清空輸入框的內容
使用.clear()無法清空輸入框的內容
正常是我們在清除文本框內容的時候,都會使用 clear() 函數進行清除,但是有時候會出現,清除完成后再點擊查詢時,文本框的內容會再次自動填充,這個時候我們可以選擇以下方式:
#清空查詢條件
driver.find_element_by_id("FORM_NAME").send_keys(Keys.CONTROL, "a")
driver.find_element_by_id("FORM_NAME").send_keys(Keys.DELETE)
全選文本框內容,然后輸入刪除按鍵,問題解決!
6、下拉框是input封裝的,下拉框內容無法定位
解決方案:先定位到input,然后輸入內容,通過操作鍵盤鍵選擇下拉框內容。
element = self.driver.find_element_by_xpath(position) element.send_keys(Keys.CONTROL, 'a') element.send_keys(text) # 輸入內容 element.send_keys(Keys.DOWN) # 鍵盤下鍵 element.send_keys(Keys.ENTER) # enter鍵
7、測試用例第一條總是執行失敗
原因:登陸頁面和測試頁面之間未設置延遲;
解決方案:在打開登陸頁面之后設置一個延遲,再打開測試頁面