如何通过 Python 向 Selenium 动态提交命令?



由于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 ...

相关内容

  • 没有找到相关文章

最新更新