【问题标题】:Selecting visible element via css selector or xpath通过 css 选择器或 xpath 选择可见元素
【发布时间】:2015-04-09 03:11:14
【问题描述】:

父css选择器的XPath(始终可见)如下:

/html/body/section/div/div[2]

大约 5 秒后(在一些 javascript 之后),它的一个子项将可见。我想通过它的 xpath 选择这个可见的孩子。

/html/body/section/div/div[2]/div[1]
/html/body/section/div/div[2]/div[2]
/html/body/section/div/div[2]/div[3]
/html/body/section/div/div[2]/div[4]

那我想获取有这个xpath+(/h3)的元素

在 html 中是这样的:

<div class="results"><div class="text-center" id="result-error"><h3 class="one">
<div class="results"><div class="text-center" id="result-fail"><h3 class="one">
<div class="results"><div class="text-center" id="result-catchall"><h3 class="one">
<div class="results"><div class="text-center" id="result-success"><h3 class="one">

以上四个之一将可见。

编辑 您的代码的 Python 等效项:

wait = WebDriverWait(browser, 10)             
rslts=wait.until(EC.presence_of_all_elements_located(By.CSS_SELECTOR, (".results h3 .one")))     

但我收到此错误:

rslts=wait.until(EC.presence_of_all_elements_located(By.CSS_SELECTOR, (".results h3 .one")))
TypeError: __init__() takes exactly 2 arguments (3 given)  

我不确定你的 CSS 选择器和它们之间的空格。看起来 present_of_all_elements_located 函数认为有 3 个参数而不是 2 个。

【问题讨论】:

    标签: html selenium xpath css-selectors


    【解决方案1】:

    假设您使用 Selenium Java 绑定。

    // A generic selector to grab a list of intended elements
    //This should return all four div you have mentioned in the question
    By byCss = By.cssSelector(".results h3 .one");
    
    //Make sure all the elements loaded properly
    List<WebElement> elements = (new WebDriverWait(driver,10)).until(ExpectedConditions.presenceOfAllElementsLocatedBy(byCss));
    
    for (WebElement element: elements){
        if (element.isDisplayed()){
            //do whatever you want with the element
            System.out.println(element.getText());
            break;
        }
    }
    

    【讨论】:

    • 我实际上在使用 Python,但我了解 Java...我不想单击该元素。我想提取它(把它变成文本)。我需要抓住可见元素的“一”类
    • 如果可见 h3 是预期元素,那么您可以使用 h3 .one 作为 cssSelector。查看我的编辑
    • 第一类有很多元素(我不关心的)。所以你定义的 CSSselector 不起作用。
    • 请提供更多的html,包括你当时提到的四个孩子的父母
    • 四个孩子的父母就是:
    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2021-12-22
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多