首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#实现Selenium上的OpenQA.Selenium.ElementNotInteractableException

使用C#实现Selenium上的OpenQA.Selenium.ElementNotInteractableException
EN

Stack Overflow用户
提问于 2020-05-02 08:45:21
回答 1查看 442关注 0票数 0
代码语言:javascript
复制
namespace FindElementCommands2
{
    class Program
    {
        public static void Main(string[] args)
        {
            IWebDriver driver = new SafariDriver();
            driver.Navigate().GoToUrl("https://demoqa.com/automation-practice-form/");


            Thread.Sleep(5000);


            bool a = driver.FindElement(By.PartialLinkText("Partial")).Enabled;
            Console.WriteLine(a);

            driver.FindElement(By.PartialLinkText("Partial Link Test")).Click();




        }
    }
}

你好啊,

我是使用C#开发Selenium的初学者。我试着点击链接部分链接测试使用PartialLinkText定位器,但它一直在抱怨元素不能在应用程序输出中交互。请说明一下哪里出了问题。当我尝试元素是禁用还是启用时,它返回True,这意味着它是启用的。它在控制台中返回True。

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 01:20:27

我认为你可以使用这个:

代码语言:javascript
复制
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using System;
using System.IO;
using System.Reflection;

namespace StackOverFlow.Answer.Selenium.PartialLinkText
{
   class Class1
   {
       public static IWebDriver driver;
       public static WebDriverWait wait;
       public static int timeOut = 30;

       [Test]
       [Category("ClickPartilLink")]
       public void LoginFail()
       {
           Console.WriteLine("Get instance Chrome Browser");
           driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), OptionsChrome());

           Console.WriteLine("Acess demo site");
           driver.Navigate().GoToUrl("http://automationpractice.com/index.php");

           Console.WriteLine("Waiting Element to click");
           WaiElement(By.XPath("//a[contains(.,'Best Sellers')]"));

           Console.WriteLine("Total Link 'Best Sellers'");
           driver.FindElement(By.PartialLinkText("Best")).Click();

           Console.WriteLine("Close Chrome Browser");
           driver.Close();

           Console.WriteLine("Kill instance Driver.");
           driver.Quit();
       }

       /// <summary>
       /// Wait elements
       /// </summary>
       /// <param name="locator"></param>
       private void WaiElement(By locator)
       {
           wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeOut));
           wait.Until(condition: ExpectedConditions.PresenceOfAllElementsLocatedBy(locator));
       }

       /// <summary>
       /// fill 
       /// </summary>
       /// <param name="locator"></param>
       /// <param name="text"></param>
       private void Fill(By locator, string text)
       {
           WaiElement(locator);
           driver.FindElement(locator).SendKeys(text);
       }

       /// <summary>
       /// click on elements 
       /// </summary>
       /// <param name="locator"></param>
       private void Click(By locator)
       {
           WaiElement(locator);
           driver.FindElement(locator).Click();
       }

       /// <summary>
       /// return text from element
       /// </summary>
       /// <param name="locator"></param>
       /// <returns></returns>
       private string GetText(By locator)
       {
           WaiElement(locator);
           return driver.FindElement(locator).Text;
       }

       /// <summary>
       /// set up what capabilites chrome will take
       /// </summary>
       /// <returns></returns>
       private ChromeOptions OptionsChrome()
       {
           ChromeOptions chromeOptions = new ChromeOptions();
           chromeOptions.AddArgument("--start-maximized");
           chromeOptions.AddArguments("--disable-infobars");
           chromeOptions.AddArguments("--disable-notifications");
           return chromeOptions;
       }
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61553017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档