[英]how can i fix the 'syntax error' in python using jupyter notebook?
[英]How can I fix this syntax error using WebDriverWait in Selenium Python
我是学习 python 的初学者,我的代码有问题。 这似乎是一个简单的错误,但我找不到此错误的解决方案。
这是一个代码
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.co.jp/")
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.NAME, "q"))
search_box = driver.find_element_by_name('q')
search_box.send_keys('Selenium')
File "<ipython-input-12-1cac2821f197>", line 4
search_box = driver.find_element_by_name("q")
^
SyntaxError: invalid syntax
search_box.submit()
driver.implicitly_wait(10)
driver.find_element_by_link_text("Selenium - Web Browser Automation").click()
time.sleep(5)
driver.quit()
问题出在第 6 行。我试图运行代码,但它说“search_box”是无效的语法。 有谁知道这个的解决方案?
语法错误经常出现在上面的行中,尤其是当这些行包含括号时。 一个技巧是计算打开和关闭括号。 如果结果不为零,则有问题:
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.NAME, "q"))
^ ^ ^ ^^ ^^
1 0 1 23 21
在这一行:
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.NAME, "q"))
最后缺少一个右括号。 并且 WebDriverWait 尚未导入:
from selenium.webdriver.support.ui import WebDriverWait
您需要考虑以下几点:
诱导WebDriverWait后,您不必再次使用find_element_by_*
。 因此,您可以删除该行:
search_box = driver.find_element_by_name('q')
当您打算与元素而不是 present_of_element_located( presence_of_element_located()
交互时,您需要element_to_be_clickable()
的expected_conditions 。
此外, element_to_be_clickable()
应该在tuple
中调用,因为它不是function而是class ,其中初始化程序只需要隐式self之外的1 个参数:
class element_to_be_clickable(object): """ An Expectation for checking an element is visible and enabled such that you can click it.""" def __init__(self, locator): self.locator = locator def __call__(self, driver): element = visibility_of_element_located(self.locator)(driver) if element and element.is_enabled(): return element else: return False
您可以将所需的三 (3) 行合并为一行,如下所示:
WebDriverWait(driver, 10).until((EC.element_to_be_clickable(By.NAME, "q"))).send_keys('Selenium')
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.