我现在正在学习 Python 上的 QA 自动化,在尝试启动第一个也是最简单的代码时遇到了该错误。我尝试了几种不同的方法,但都行不通。我尝试关闭我的 VPN,我的互联网连接良好,我更新了所有 python 库。
我在 Windows 11 Home 上使用 Python 3.10、pytest 7.1.3、pytest-selenium 4.0.0、selenium 4.4.3、Pycharm 2022.2.2。
这是我尝试启动的代码。错误发生在谷歌页面打开后,它不会在搜索字段中输入测试文本,然后 urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=63146): 发生错误。
import time
from selenium import webdriver
driver = webdriver.Chrome()
def test_search_example(selenium):
""" Search some phrase in google and make a screenshot of the page. """
# Open google search page:
selenium.get('https://google.com')
# time.sleep(5)
# Find the field for search text input:
search_input = driver.find_element("name", "q")
# Enter the text for search:
search_input.clear()
search_input.send_keys('first test')
time.sleep(5)
# Click Search:
search_button = driver.find_element("name", "btnK")
search_button.click()
time.sleep(10)
# Make the screenshot of browser window:
selenium.save_screenshot('result.png')
driver.quit()
您似乎将
selenium
中的 pytest-selenium
与您独立旋转的 driver
混合在一起。
请注意,您已使用
selenium
var: 导航至 URL
selenium.get('https://google.com')
但是随后您使用
driver
var: 执行了一个操作
search_input = driver.find_element("name", "q")
search_button = driver.find_element("name", "btnK")
因此将
find_element
行更改为:
search_input = selenium.find_element("name", "q")
# and this line:
search_button = selenium.find_element("name", "btnK")
然后删除所有其他包含
driver
的行:
### Remove these lines:
# from selenium import webdriver
# driver = webdriver.Chrome()
# driver.quit()
...然后使用
pytest
运行,以便它使用 selenium
中的 pytest-selenium
夹具来执行所有硒操作。
您的代码有一个问题。
你创建了这个函数
test_search_example()
但你从未调用过它。
这应该可以解决问题:
import time
from selenium import webdriver
def test_search_example():
driver = webdriver.Chrome()
# Open google search page:
driver.get('https://google.com')
time.sleep(5)
# Find the field for search text input:
search_input = driver.find_element("name", "q")
# Enter the text for search:
search_input.clear()
search_input.send_keys('first test')
time.sleep(5)
# Click Search:
search_button = driver.find_element("name", "btnK")
search_button.click()
time.sleep(10)
# Make the screenshot of browser window:
driver.save_screenshot('result.png')
driver.quit()
test_search_example()