如何在Python中使用Selenium点击这个按钮?(使用Edge浏览器)

ubof19bj  于 2023-03-11  发布在  Python
关注(0)|答案(1)|浏览(185)

我一直在尝试自动登录到预订系统,以帮助我预订我的课程。
enter image description here
我试过使用以下方法:

clickLogin = driver.find_element(By.XPATH, "//button[text()='Access to Booking System']")
driver.execute_script("arguments[0].click();", clickLogin)

clickLogin = driver.find_element(By.XPATH, "//button[text()='Access to Booking System']")
clickLogin.click()

clickLogin = driver.find_element(By.CLASS_NAME, "div.v-btn.v-btn--is-elevated.v-btn--has-bg.theme--light.v-size--default.primary")
clickLogin.click()

但似乎仍然没有点击它。
如果有人需要上下文,代码的其余部分就在这里:https://github.com/jaezeu/drive-booking/blob/main/main.py

jw5wzhpr

jw5wzhpr1#

您的HTML是登录屏幕后面,所以我不能看到完整的HTML,但这里是我可以告诉从您张贴的HTML...
XPath在前两个定位符中的问题是元素内的文本两侧是空格。

driver.find_element(By.XPATH, "//button[text()=' Access to Booking System ']").click()
                                                ^      spaces added      ^

第三个定位器的问题是你已经指定了By.CLASS_NAME但是提供了一个CSS选择器。By.CLASS_NAME只接受一个类名,所以你无论如何都需要将它转换成一个CSS选择器。另一个问题是你的CSS选择器正在寻找一个DIV,但是它实际上是你提供的HTML中的一个BUTTON。下面是修复的CSS选择器。

driver.find_element(By.CSS_SELECTOR, "button.v-btn.v-btn--is-elevated.v-btn--has-bg.theme--light.v-size--default.primary").click()

我更喜欢XPath,因为对我来说,它包含的文本更易于阅读,所以如果页面上有任何更改,定位器中断,与一串晦涩的类名相比,更容易看到更改的内容。

相关问题