Selenium webdriver 在有两个按钮的页面上单击错误的按钮

Selenium webdriver 在有两个按钮的页面上单击错误的按钮,selenium-webdriver,Selenium Webdriver,我正在使用SeleniumWebDriver测试网页。 该网页有两个按钮,一个按钮带有按钮文本“Zoeken”,另一个按钮带有按钮文本“Verstuur”。我想通过使用XPath或CssSelector和以下代码单击按钮文本为“Verstuur”的按钮: driver.FindElement(By.XPath("/html/body/div[3]/div[2]/div[2]/form/fieldset/a/span")).Click(); driver.FindElement(By.CssSel

我正在使用SeleniumWebDriver测试网页。 该网页有两个按钮,一个按钮带有按钮文本“Zoeken”,另一个按钮带有按钮文本“Verstuur”。我想通过使用XPath或CssSelector和以下代码单击按钮文本为“Verstuur”的按钮:

driver.FindElement(By.XPath("/html/body/div[3]/div[2]/div[2]/form/fieldset/a/span")).Click();
driver.FindElement(By.CssSelector("fieldset.contact_form > a.button > span.button_center")).Click();
但使用上述代码行中的任意一行,在按钮上单击文本“Zoeken”

此按钮具有非常类似的CssSelector和XPath:

fieldset.header_search a.button span.button_center

/html/body/div[3]/div/form/fieldset/a/span[2]

有人知道如何解决这个问题吗?

xpath for ZOEKEN
/html/body/div[3]/div/form/fieldset/a/span[2]

VERSTUUR的xpath
/html/body/div[3]/div[2]/div[2]/form/fieldset/a/span[2]
尝试以下操作:

driver.FindElement(By.XPath("//span[text()='Verstuur']")).click();
编辑:

我认为你想学习Selenium,这就是你使用第三方网站的原因。如果您真的想学习Selenium,请找到一些可自动化的开源应用程序。这是一个很好的自动化应用程序-

下载最新版本并安装

在这里查找有关网站和selenium内容的更多信息。太好了


用CSS选择器试试这个,告诉我它是否有效。 对于“verstuur”:

By.cssSelector(“div.content表单a.button”)

解决方案:

好的,我发现了你的问题。您的xpath很好,但是现在,您在单击submit时的操作将是第一个表单,因此表单将使用“Zoeken”

试试这个:

onclick="document.forms["form"].submit();" // submit the 2nd form, the good one !
//or
onclick="document.forms[1].submit();"

证明:

Zoeken:
driver.findElement(By.xpath(“//div[1]/form/fieldset/a/span[2]”)。单击()

Verstuur:
driver.findElement(By.xpath(“//div[2]/form/fieldset/a/span[2]”)。单击()


使用xpath很容易,但速度很慢。

嗨,HemChe,我为两个按钮都提供了xpath。尽管它们不同,但找到并单击了按钮“Zoeken”。我现在尝试使用driver.FindElement(By.CssSelector(“span:contains('Verstuur'))查找元素。单击();但随后我收到错误消息“无法找到css选择器==span:contains('Verstuur')的元素”。你知道有什么问题吗?我试图查找的元素的html是VerstuUrunfortuly,但它不起作用,仍然单击了另一个按钮,按钮文本为“Zoeken”。现在,我尝试使用driver.findelelement(By.CssSelector(“span:contains('Verstuur'))查找元素);但随后我收到错误消息“无法找到css选择器==span:contains('Verstuur')的元素”。你知道有什么问题吗?我试图查找的元素的html是VerstuurTry driver.FindElement(By.XPath(“//form[1]//span[text()='Verstuur']);嗨,我试过上面的方法,但是仍然点击了按钮文本为“Zoeken”的按钮。这里是代码行:driver.findelelement(By.CssSelector(“div.content form a.button”)).Click();因此,我建议您通过.cssSelector(“div.content form[name='form']a.button”)尝试这样做。您好,也尝试了这样做,但仍然单击了另一个按钮。似乎在页面上找到的第一个按钮被单击,而CssSelector被忽略。您是否尝试一步一步地捕捉元素?xpath(“//form[@name='form']”)是否存在?xpath(“//form[@name='form']/a”)是否存在?每次都要深入一点吗?我已经用以下所有XPath运行了测试:driver.FindElement(By.XPath(“//form[@name='form']);FindElement(By.XPath(“//form[@name='form']/fieldset”);FindElement(By.XPath(“//form[@name='form']/fieldset/a”);FindElement(By.XPath(“//form[@name='form']/fieldset/a/span[2]”);一切都很好。但在将Click()添加到最后一个xpath时,仍然会单击另一个按钮“Zoeken”。按钮“Zoeken”的相对xpath除了表单的名称之外是相同的。似乎表格的名称没有被考虑在内
onclick="document.forms["form"].submit();" // submit the 2nd form, the good one !
//or
onclick="document.forms[1].submit();"