我正在尝试使用简单的自动登录屏幕测试来单击带有硒的按钮。 我正在 2 个独立的帐户上运行此测试,其中两个登录屏幕略有不同。 第一个按预期工作,我可以在其中找到带有“SPAN”的按钮(因为这就是它的设置方式):
<button mat-raised-button="" fisstyle="" color="primary" class="mat-focus-indicator mat-raised-button mat-button-base mat-primary ng-star-inserted">
<span class="mat-button-wrapper"> Sign in </span>
<span matripple="" class="mat-ripple mat-button-ripple"></span>
<span class="mat-button-focus-overlay"></span>
</button>
但是,第二个登录页面的设置略有不同:
<button mat-raised-button="" fisstyle="" color="primary" class="mat-focus-indicator mat-raised-button mat-button-base mat-primary ng-star-inserted">Sign in</button>
第一页使用此代码工作:
sm.click(driver, "//span[text()=' Sign in ']")
但是对于第二个,Selenium 很难接受它。 有什么建议吗?
我尝试在单击之前添加暂停,因为我认为这可能是由于按钮元素在按下之前不可用造成的,但事实并非如此。例如,对没有跨度的按钮的代码进行了实验:
sm.click(driver, '//button[@class="mat-focus-indicator mat-raised-button mat-button-base mat-primary ng-star-inserted"')
但是没有成功
如果您正在寻找一个可以同时找到两者的定位器,您可以使用下面的 XPath
//button[contains(.,'Sign in')]
如果您正在为每个元素寻找一个定位器,那么您已经有了第一个定位器,因此第二个定位器就是。
//button[text()='Sign in']