我在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.
答案 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)
根据您分享的HTML
,id
属性看起来很动态。因此,我们必须构建动态xpath
或css
。此外,我们必须使用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()