由于Python主要是一种运行时语言,因此可以通过Selenium获得诸如"等待开发人员输入"之类的东西。就我而言,在网页上实时测试代码(如偏移量或滚动(比每次代码无法按预期工作时重新启动网站更有效。
类似的东西
(...)
driver.get(url)
while True:
command = wait_for_python_code()
# developer inputs 'elem = driver.find_element_by_class_name('myclass')nprint(elem.text)'
# selenium prints content of myclass on the go
所以基本上动态允许用户(开发人员(输入任何任意的python代码,这些代码将被喂给Selenium。
注意:我不是在寻找答案来获取用户输入提供的class_name,而是整个代码块可能是任何东西(这是供内部使用的,所以不用担心安全漏洞(
您可以使用input()
函数接受键盘输入。
如果你只想找到一个具有给定类的元素,你可以使用这个:
while True:
klass = input("Enter the element class name: ")
elem = driver.find_element_by_class_name(klass)
print(elem.text)
但是,如果你想允许用户输入任何任意的python代码,那就要复杂得多。
调试 Selenium 脚本的一种非常方便的方法是将驱动程序对象返回到提示符,然后您可以像在脚本中一样使用该驱动程序,但您可以在交互式 python shell 中访问它:
# mycode.py
from selenium import webdriver
import time
def get_driver():
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(chrome_options=options)
return driver
您现在可以打开 python shell 并手动运行此代码
> from mycode import get_driver
> driver = get_driver
现在可以根据需要调试驱动程序:
> driver.get('https://python.org')
> driver.find_element_by_class_name('div#ICanDoAnyThingIWant')
# etc ...