selenium xpath,选择具有特定标题的跨度

时间:2018-08-26 12:20:21

标签: c# selenium xpath

我正在尝试使用chromedriver硒选择此元素:

<span title="1968milziewa@ama-coupons.com" class="rcmContactAddress">1968milziewa@ama-coupons.com</span>

其中电子邮件地址是变量。

尝试过此方法,但不起作用:

driver.FindElement(By.XPath("//span[text()='" + username + "@ama-coupons.com']")).Click();

也尝试过:

driver.FindElement(By.XPath("//span[contains(@title, '"+username+"@ama-coupons.com']")).Click();

但它也不起作用。 #1给出了找不到的元素#2没有给出有效的xpath选择器。

更新:

我让它使用硬编码的电子邮件地址,但是,一旦我用一个变量替换了该电子邮件地址,它就不再起作用。

HTML元素:

<span title="1959jessamin@ama-coupons.com" class="rcmContactAddress">1959jessamin@ama-coupons.com</span>

代码:

new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.CssSelector("span[title='"+email+"']"))).Click(); Thread.Sleep(1000);

错误:(还会显示电子邮件的值:)

  

内部异常1:
      NoSuchElementException:否这样的元素:无法找到元素:{“ method”:“ css选择器”,“ selector”:“ span [title='1959Jessamin@ama-coupons.com']”}
        (会话信息:chrome = 68.0.3440.106)
        (驱动程序信息:chromedriver = 2.41.578737(49da6702b16031c40d63e5618de03a32ff6c197e),platform = Windows NT 10.0.17134 x86_64)

1 个答案:

答案 0 :(得分:0)

您在选择器内部忘记)的第二个选择器存在问题:

By.XPath("//span[contains(@title, '1968milziewa@ama-coupons.com')]")

对于element not found错误,请使用等待,此处代码带有明确的等待,直到元素可单击为止:

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("span[title='1968milziewa@ama-coupons.com']"))).Click();

有关等待的更多信息,您可以在Selenium Docs中找到,或者 When to use explicit wait vs implicit wait in Selenium Webdriver?

如果元素位于iframe Selenium: Unable to access iframe and data inside it

还可以使用选择器:

By.CssSelector("span[title='1968milziewa@ama-coupons.com']")
By.XPath("//span[.='1968milziewa@ama-coupons.com']")
相关问题