python - 为什么我无法使用 Selenium 打开 google.com?
问题描述
当我问这个 StackOverflow 问题时,我正在从事的这个项目与我正在从事的项目相同: 运行基于 Selenium 的代码时出现名称错误。同样,这两个问题都与 Selenium 有关。但是,这次我没有收到任何错误,但是我要打开的网站没有打开。而且我确定我的 chrome_directory 是正确的。不知道为什么 Google.com 没有打开。这是我的代码:
from selenium import webdriver
class Infow():
def __init__(self):
self.driver = webdriver.Chrome(executable_path='C:\Program Files (x86)\Chrome Driver@C drive\ChromeDriverExtracted\chromedriver_win32 (2)\chromedriver.exe')
def get_infow(self, query):
self.query = query
self.driver.get(url="https://www.google.com/")
assist.Infow()
assist.get_infow("exe")
这是我在终端看到的文字
"D:\Rocland\Selenium Pycharm\Scripts\python.exe" "D:/PycharmProjects/Selenium
Pycharm/Selenium for trevor.py"
Process finished with exit code 0
如果这个问题毫无意义,我很抱歉。我是 Selenium 初学者,我看到的所有 Stack 都没有回答我的问题。(我不确定这是否会有所帮助,但我在 Win10 上使用 PyCharm)我希望我的观点清楚,任何人的帮助都会很高兴地被接受。提前致谢!
解决方案
你在第二行有缩进问题:class Infow()
试试这个,然后自己调试。
from selenium import webdriver
def __init__(self):
self.driver = webdriver.Chrome(executable_path='your path')
self.driver.get(url="https://www.google.com/")
类应如下所示:
class Testing:
def __init__(self, name=None, number=None):
self.name = name
self.number = number
根据您的情况检查示例。我使用Linux,所以我executable_path
与您的不同。你的似乎是正确的,因为你没有任何错误:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
driver.get("https://www.google.com/")
assert "Google" in driver.title
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".gLFyf.gsfi")))
input_field = driver.find_element_by_css_selector(".gLFyf.gsfi")
input_field.send_keys("Why are people so mad?")
input_field.send_keys(Keys.RETURN)
wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".yuRUbf")))
results = driver.find_elements_by_css_selector(".yuRUbf>a>h3")
for result in results:
print(result.text)
driver.close()
driver.quit()
此外,我已经使用unittest实现了。这应该回答你所有的问题:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest
class SiteTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver')
def test(self):
driver = self.driver
driver.get('https://google.com/')
driver.get("https://www.google.com/")
assert "Google" in driver.title
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".gLFyf.gsfi")))
input_field = driver.find_element_by_css_selector(".gLFyf.gsfi")
input_field.send_keys("Why are people so mad?")
input_field.send_keys(Keys.RETURN)
wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".yuRUbf")))
results = driver.find_elements_by_css_selector(".yuRUbf>a>h3")
for result in results:
print(result.text)
def tearDown(self):
self.driver.close()
self.driver.quit()
if __name__ == "__main__":
unittest.main()
推荐阅读
- google-apps-script - 如何在您的活动中添加编辑器?
- html - @media 屏幕和背景颜色问题。假定的背景颜色未显示
- python - 如何根据python中的时间列每5秒计算一次平均值
- typescript - 如何键入递归可变元组
- typescript - TypeScript:在递归类型中,仅允许在对象声明中分配额外的道具
- kotlin - Kotlin 编译时间极慢
- reactjs - 将 Route 路径传递给子元素
- machine-learning - 从庞大的文本语料库中的给定术语列表中查找最相似的术语
- image - YouTube 缩影和下一代格式图片
- android - AR Core 中的持久 AR 会话