Selenium单击XPath按钮

时间:2017-11-27 03:17:20

标签: python selenium xpath

我在Chrome上查看时有以下代码。

<span id="button-1111-btnInnerEl" class="x-btn-inner x-btn-inner-center" unselectable="on" style="">New Email</span>

我需要点击标签&#34; New Email&#34;,但是如何在Selenium中调用它(我使用Python)。

def CreateMail():
    EmailButton="//*[contains(text(),'New Email')]"
    driver.find_elements_by_xpath(EmailButton)  // there is no method to enable click.

7 个答案:

答案 0 :(得分:2)

您可以使用execute_script

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

感谢大家的帮助。最后我找到了我的问题的答案。我必须在找到密钥之前添加一个等待声明。页面加载时键不存在,因此必须等待一点才能找到正确的键。

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!")

答案 3 :(得分:0)

您的陈述:“driver.find_ 元素 _by_xpath(EmailButton)”。单击对元素组不起作用。它仅对单个元素可操作。所以你使用一个单一的查找器。

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

根据您分享的HTMLid属性看起来很动态。因此,我们必须构建动态xpathcss。此外,我们必须使用find_elements而不是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);  

答案 6 :(得分:-1)

实际上有不同的方法来定位元素 但在你的情况下有一个ID, 所以你可以选择id,如果它存在

找到以下解决方案:

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