Selenium click() 方法与 XPATH 的问题

问题描述 投票:0回答:1

我正在尝试使用简单的自动登录屏幕测试来单击带有硒的按钮。 我正在 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"')

但是没有成功

python selenium-webdriver pycharm
1个回答
0
投票

如果您正在寻找一个可以同时找到两者的定位器,您可以使用下面的 XPath

//button[contains(.,'Sign in')]

如果您正在为每个元素寻找一个定位器,那么您已经有了第一个定位器,因此第二个定位器就是。

//button[text()='Sign in']
© www.soinside.com 2019 - 2024. All rights reserved.