Ошибка C# :openQA.Selenium.Исключение ElementNotInteractableException: ‘элемент, с которым невозможно взаимодействовать

#c# #visual-studio #selenium

Вопрос:

Я создаю программу для добавления постов о продажах в Facebook marketplace. У меня проблема с добавлением фотографии, потому что она показывает мне ошибку, как в названии. Я удивлен, потому что, когда я попытался добавить изображение в Google graphics таким же образом (IWebElement и переменная), это сработало очень хорошо. Кто-нибудь знает, как это решить? Я не хочу использовать api.

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
using System.Threading;

namespace MARKETPLACE_v2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string url = "https://www.facebook.com/";

        ChromeDriver driver; Thread th;

        private void Form1_Load(object sender, EventArgs e)
        {
            ChromeOptions options = new ChromeOptions();
            options.AddArguments("--disable-notifications"); // to disable notification
            driver = new ChromeDriver(options);
            driver.Navigate().GoToUrl(url);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            driver.FindElement(By.XPath("//button[normalize-space()='Akceptuj wszystkie']")).Click();

            driver.FindElement(By.XPath("//input[@id='email']")).SendKeys("login");

            driver.FindElement(By.XPath("//input[@id='pass']")).SendKeys("password");

            driver.FindElement(By.XPath("//button[contains(text(),'Zaloguj się')]")).Click();

            //login

            driver.FindElement(By.XPath("//*[name()='path' and contains(@d,'M17.5 23.7')]")).Click(); Thread.Sleep(2000);

            driver.FindElement(By.XPath("//div[@class='j83agx80 cbu4d94t d6urw2fd dp1hu0rb l9j0dhe7 du4w35lb']//span[@class='d2edcug0 hpfvmrgz qv66sw1b c1et5uql lr9zc1uh a8c37x1j keod5gw0 nxhoafnm aigsh9s9 d3f4x2em fe6kdd0r mau55g9w c8b282yb iv3no6db jq4qci2q a3bd9o3v lrazzd5p knomaqxo']//span[1]")).Click(); Thread.Sleep(3000);

            driver.FindElement(By.XPath("//span[contains(text(),'Przedmiot na sprzedaż')]")).Click(); Thread.Sleep(3000);

            IWebElement element = driver.FindElement(By.XPath("//div[@class='s45kfl79 emlxlaya bkmhp75w spb7xbtv bp9cbjyn rt8b4zig n8ej3o3l agehan2d sk4xxmp2 rq0escxv pq6dq46d taijpn5t l9j0dhe7 tdjehn4e qypqp5cg q676j6op']//i[@class='hu5pjgll lzf7d6o1']"));

            element.SendKeys(@"C:downloadmaciek.jpg");

        }
    }
}
 

Комментарии:

1. Какая строка кода / команда выдает эту ошибку?

2. элемент. Отправить ключи(@»C:downloadmaciek.jpg»);

Ответ №1:

Похоже, вы пытаетесь отправить путь к загружаемому файлу не тому элементу.
Элемент, получающий загруженный файл в виде строки, обычно соответствует этому XPath:

 //input[@type='file']
 

т. е. он есть input , нет div и имеет атрибут type со значением file .

Комментарии:

1. Я изменил его и, к сожалению, ничего не происходит, ошибка не выскочила, но фотография не была добавлена 🙁

2. //input[@type='file'] Дает ли локатор одно совпадение на этой странице или их более 1?

3. к сожалению, он недоступен

4. итак, у вас есть какие-нибудь идеи, как это сделать?