Python Selenium单击XPath按钮

Python Selenium单击XPath按钮,python,selenium,xpath,Python,Selenium,Xpath,当我在Chrome上检查时,我有以下代码 <span id="button-1111-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on" style="">New Email</span> 您的语句:“驱动程序。通过xpath(EmailButton)查找元素”。单击不适用于一组图元。它只能在单个元素上操作。所以你使用单数查找器 driver.find_**element**_by_i

当我在Chrome上检查时,我有以下代码

<span id="button-1111-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on" style="">New Email</span>
您的语句:“驱动程序。通过xpath(EmailButton)查找元素”。单击不适用于一组图元。它只能在单个元素上操作。所以你使用单数查找器

driver.find_**element**_by_id(EmailButton).click()

希望此XPath适用于您。如果您想使用chrome浏览器验证XPath,只需将此文本粘贴到您的chrome控制台
$x(“/*[text()='New Email']”)上
,并检查使用此XPath找到的元素数

 driver.find_elements_by_xpath("//span[text()='New Email']")

您可以使用
execute\u脚本

driver.execute_script("document.getElementById('button-1111-btnInnerEl').click()")

根据您共享的
HTML
id
属性在我看来是动态的。因此,我们必须构造一个动态的
xpath
css
。此外,我们必须使用
find_element
而不是
find_element
,因此返回一个
WebElement
,我们可以调用
click()
方法。最后,如果您正确查看节点,unselectable属性将启用,因此我们将使用
JavascriptExecutor
的帮助,如下所示:

myElement = driver.find_element_by_xpath("//span[starts-with(@id, 'button-')][@class='x-btn-inner x-btn-inner-center']")
driver.execute_script("arguments[0].click();", myElement);  

实际上,定位元素有不同的方法 但在你的情况下有一个身份证, 因此,如果id存在,您可以选择id

在下面找到解决方案:

driver.find_element_by_id("button-1111-btnInnerEl").click()

谢谢大家的帮助。最后我找到了我问题的答案,在找到钥匙之前,我不得不添加一个等待语句。当页面加载时,键不存在,因此必须等待一段时间才能找到正确的键

def CreateMail():
try:
    element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "button-1143-btnInnerEl")))
    driver.find_element_by_id("button-1143-btnInnerEl").click()

except TimeoutException:
    print ("Loading took too much time!")

您是否尝试了方法
。单击()
类似于
驱动程序。通过xpath(xpath)查找元素。单击()
驱动程序。通过xpath(EmailButton)查找元素。单击()属性错误:“列表”对象没有属性“单击”您可能想单击它的父容器。不是每个元素都可以单击。但是没有看到它,我无能为力。当我单击它时,我在我的chrome控制台(inspect元素)中看到上面的代码,可能clickable元素是它的父元素,我在这里看不到父元素。selenium.common.exceptions.ElementNotInteractiableException:消息:基于html,它应该可以工作。可能您需要采取另一个操作以使其可交互。这是精确复制的精确复制
driver.find_element_by_id("button-1111-btnInnerEl").click()
def CreateMail():
try:
    element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "button-1143-btnInnerEl")))
    driver.find_element_by_id("button-1143-btnInnerEl").click()

except TimeoutException:
    print ("Loading took too much time!")