[试图使我的机器人点击提交按钮。
<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都不相同。我能在这里找到通常可行的方法吗?
尝试使用CSS选择器:
driver.find_element_by_css_selector('div.usertext-buttons > button[type=submit]').click()
要单击文本为保存的元素,可以使用以下Locator Strategies之一:
使用css_selector
:
driver.find_element_by_css_selector("button.save[type='submit'][onclick]").click()
使用xpath
:
driver.find_element_by_xpath("//button[@class='save' and text()='save'][@type='submit' and @onclick]").click()
理想情况下,单击元素必须将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