使用python seleniumbase在文本框中输入值

9rbhqvlz  于 2022-12-26  发布在  Python
关注(0)|答案(1)|浏览(206)

我决定为我正在做的一个项目摆弄一下seleniumbase,并且一直在努力弄清楚语法。在GitHub网站上,我发现了很多展示self.click()self.type()的代码、文档和示例。我试图让我的代码在这个网站的过程框中输入术语"MRI",但它不起作用,而且我试图访问的大多数代码都没有ID值。我希望有人能通过我的语法,阐明为什么会出现这种情况。
这是我的代码:

from seleniumbase import BaseCase

class HealthSiteTest(BaseCase):
    def test_health_site(self):
        self.open("https://www.finestrahealth.com/")
        self.assert_element_present("Finestra")
        self.type("input#Procedure", "mri")

if __name__ == "__main__":
    from pytest import main
    main([__file__])

这是我想访问的内容的html:

任何帮助都非常感激,谢谢!

cqoc49vn

cqoc49vn1#

在脚本中,您有self.assert_element_present("Finestra"),但其输入应该是CSS选择器或XPath,而不是文本。对于文本Assert,您可以执行self.assert_text("TEXT")self.assert_text("TEXT", "SELECTOR")(用于子字符串搜索)或self.assert_exact_text("TEXT", "SELECTOR")
下面的脚本将验证文本并填充该页面上的字段:

from seleniumbase import BaseCase

class RecorderTest(BaseCase):
    def test_recording(self):
        self.open("https://www.finestrahealth.com/")
        self.assert_exact_text("finestra", 'a[href="/"] span')
        self.type('input[placeholder="Procedure"]', "mri")
        self.type('input[placeholder="Zip code"]', "02142")
        self.type('input[placeholder="Insurance"]', "aetna")
        self.click('button:contains("Search")')
        self.assert_element('main p:contains("Hospitals")')
        self.sleep(2)

if __name__ == "__main__":
    from pytest import main
    main([__file__])

你可以使用SeleniumBase Recorder通过手动点击和输入文本来生成上面的脚本。在SeleniumBase GitHub页面上有很多关于记录器的文档(和视频)。
如果你使用pytest --demo运行上面的脚本,你会看到浏览器的动作,这样就更容易看到脚本在做什么。否则,它可能运行得太快,你的眼睛看不到它在做什么(但它仍然可以成功地全速运行,甚至在无头模式下运行得更快)。

相关问题