#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. итак, у вас есть какие-нибудь идеи, как это сделать?