提问人:olamundo97 提问时间:11/10/2023 更新时间:11/10/2023 访问量:41
Selenium 无法在搜索栏上写入内容
Selenium can't swrite something on the search bar
问:
我正在使用 Selenium 和 C# 抓取一个工作网站。当我运行应用程序时,chromewebdriver 会打开,一旦它打开,网站上就会弹出一个模型,然后,程序会关闭它,但是我的程序很快就会停止执行。目的是关闭此模态 -> 在搜索栏上输入内容,然后按“Enter”。但是,我无法在搜索栏上输入某些内容,因为它给出了错误:.我应该如何解决它?Timed out after 20 seconds
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JobWebScraper
{
public class AutomationWeb
{
public IWebDriver driver;
public AutomationWeb()
{
var options = new ChromeOptions();
options.AddArgument("no-sandbox");
driver = new ChromeDriver(); //vai abrir o navegador do Chrome
}
public void TestWeb()
{
driver.Navigate().GoToUrl("https://portal.gupy.io/?int_ref=navbar-candidatos");
driver.FindElement(By.XPath("//*[@id=\"radix-0\"]/div[2]/button")).Click();
// Use an explicit wait for the search input field to be clickable and then send keys
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
// Wait for the search input field to be clickable and then send keys
IWebElement searchInput = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id=\"react-aria-9\"]")));
// Send keys directly after the element is clickable
searchInput.SendKeys("desenvolvedor");
searchInput.SendKeys(Keys.Enter);
}
}
}
答:
1赞
Yaroslavm
11/10/2023
#1
看起来你有问题,因为你依赖错误的输入。
对我来说,DOM 中存在 2 个搜索输入。 第一个是不可见的(可能是在移动视图上呈现的),第二个是可见的和可交互的。
因此,您应该通过可见性过滤带有定位器的输入,并与第一个找到的元素进行交互。[name=searchTerm]
// previous code
var searchInputs = wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.CssSelector("[name=searchTerm]")));
var visibleInput = searchInputs.FirstOrDefault(element => element.Displayed);
visibleInput?.SendKeys("desenvolvedor");
visibleInput?.SendKeys(Keys.Enter);
评论
0赞
olamundo97
11/12/2023
这是行不通的
1赞
Yaroslavm
11/12/2023
@olamundo97不可能,它不起作用。这是您的代码 + 我的代码证明它按预期工作:monosnap.com/file/xIv2x5cR4cDS2EzAbUi8KbGj1MWv6y(只要我安装了最新版本的 Selenium,我已将预期条件替换为 ExplicitWait,但这不应该是预期条件不起作用的原因)。
0赞
olamundo97
11/15/2023
谢谢,我意识到我做错了什么
评论