【问题标题】:How to get this element and click on it with selenium?如何获取这个元素并用硒点击它?
【发布时间】:2020-10-03 06:04:50
【问题描述】:
试图让我的机器人点击提交按钮。
<div class="usertext-buttons">
<button type="submit" onclick="" class="save">save</button>
<button type="button" onclick="return cancel_usertext(this);" class="cancel" style="display:none">cancel</button>
<span class="status"></span></div>
我想用type="submit"获取第二行元素
driver.find_element_by_xpath 不起作用,因为每个帖子的 xpath 都不同。我可以在这里拉什么通常有效的东西?
【问题讨论】:
标签:
python
selenium
xpath
css-selectors
webdriverwait
【解决方案1】:
要点击文本为 save 的元素,您可以使用以下任一Locator Strategies:
理想情况下,要单击元素,您必须将WebDriverWait 诱导为element_to_be_clickable(),并且您可以使用以下任一定位器策略:
-
使用CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.save[type='submit'][onclick]"))).click()
-
使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='save' and text()='save'][@type='submit' and @onclick]"))).click()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
【解决方案2】:
尝试使用 css 选择器:
driver.find_element_by_css_selector('div.usertext-buttons > button[type=submit]').click()