【问题标题】:Find Element by xpath in selenium (C#) in gmail - contains data在 gmail 中通过 selenium (C#) 中的 xpath 查找元素 - 包含数据
【发布时间】:2016-04-02 02:00:11
【问题描述】:

我希望在 gmail 收件箱中打开一个链接(消息)(点击 gmail 的标题 -“您的订单已发货”)以打开一封电子邮件(我正在使用带有 C# 的 selenium)。

我正在使用:

driver.FindElement(By.XPath("//*[contains(.,'Your Order has Shipped')]")

我发现元素有:X=0, Y=0, width = 1366 height = 406,

因此,这2行成功通过:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(
          By.XPath("//*[contains(.,'Your Order has Shipped')]")));

但是点击这个元素什么都不做。

我找不到任何具有固定 Id/类名 (gmail....) 的 div/span,

请指教,

吉尔

【问题讨论】:

    标签: c# selenium xpath


    【解决方案1】:

    我刚试过:

    WebDriver.FindElement(By.XPath(".//div[@role='link'][contains(.,'YOURTEXTHERE')]")).Click();
    

    它点击并打开了我正在寻找的电子邮件。

    【讨论】:

    • 嗨,得到:"{"元素当前不可见,因此可能无法与两者交互"}"。是否有人使用该标题在 gmail 中打开了一封电子邮件?
    • 你可能不得不使用 Actions() 类。您实际上可以让鼠标移动到元素并单击。我编辑了我的答案
    • 嗨,我试过了,但元素仍然得到 x=0 y=0,并且异常:{“元素内的偏移量无法滚动到视图中:(0, 0): [object HTMLDivElement] ( 34)"}"
    • 谢谢抽奖,我设法用一个列表来做到这一点(正如我在下面的评论中描述的那样) IList ListofMatches = driver.FindElements(By.XPath(".//div[@role= '链接'][包含(.,'text')]"));这将返回一个项目列表,其中一个是正确的。然后我使用: for (int index = 0; index
    • 由于 XPath 使用 contains() 如果超过 1 封电子邮件包含该文本,您将获得超过 1 个结果。如果您使用 FindElement,它将返回第一个结果(最近的电子邮件),如果您使用 FindElements,它将找到所有结果。
    【解决方案2】:

    您可以点击使用 Javascript 不可见的元素。

    IJavaScriptExecutor executer = driver as IJavaScriptExecutor;
    executor.ExecuteScript("arguments[0].click();", elementToClick);
    

    否则,如果它不可见,您可以执行以下操作,在单击它之前将其显示出来。

    elementToClick.SendKeys(Keys.Home);
    Thread.Sleep(100);
    elementToClick.Click();
    

    【讨论】:

    • 10x,问题不是元素不可见,而是元素有x,y,width&height=0。我使用了之前的答案并使用了:
    • IList ListofMatches = driver.FindElements(By.XPath(".//div[@role='link'][contains(.,'text')]"));这将返回一个项目列表,其中一个是正确的。然后我使用: for (int index = 0; index
    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 2015-11-10
    • 2022-07-05
    • 1970-01-01
    相关资源
    最近更新 更多