<p>避免使用<em>索引</em>可以使用以下<a href="https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890">Locator Strategy</a>:</p>
<p>要使用<a href="https://stackoverflow.com/questions/54459701/what-is-selenium-and-what-is-webdriver/54482491#54482491">Selenium</a>和<a href="/questions/tagged/python" class="post-tag" title="show questions tagged 'python'" rel="tag">python</a>从所有<code><li class="Fruit"></code>中提取和打印文本,例如苹果</em>、<em>橙色</em>等,您可以使用以下任一<a href="https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890">Locator Strategies</a>:</p>
<ul>
<li><p>使用<code>css_selector</code>和<code>get_attribute("innerHTML")</code>:</p>
<pre><code>print([my_elem.get_attribute("innerHTML") for my_elem in driver.find_elements_by_css_selector("ul.same_name div")])
</code></pre>
</li>
<li><p>使用<code>xpath</code>和<em>文本</em>属性:</p>
<pre><code>print([my_elem.text for my_elem in driver.find_elements_by_xpath("//ul[@class='same_name']//div")])
</code></pre>
</li>
</ul>
<hr/>
<p>理想情况下,您需要为<code>visibility_of_all_elements_located()</code>诱导<a href="https://stackoverflow.com/questions/49775502/webdriverwait-not-working-as-expected/49775808#49775808">WebDriverWait</a>,并且您可以使用以下任一<a href="https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890">Locator Strategies</a>:</p>
<ul>
<li><p>使用<code>CSS_SELECTOR</code>和<code>get_attribute("innerHTML")</code>:</p>
<pre><code>print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "ul.same_name div")))])
</code></pre>
</li>
<li><p>使用<code>XPATH</code>和<em>文本</em>属性:</p>
<pre><code>print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//ul[@class='same_name']//div")))])
</code></pre>
</li>
<li><p><strong>注意</strong>:您必须添加以下导入:</p>
<pre><code>from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
</code></pre>
</li>
</ul>
<hr/>
<h2>奥特罗</h2>
<p>链接到有用的文档:</p>
<ul>
<li><a href="https://seleniumhq.github.io/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html#selenium.webdriver.remote.webelement.WebElement.get_attribute" rel="nofollow noreferrer">^{<cd9>}</a>方法<code>Gets the given attribute or property of the element.</code></li>
<li><a href="https://seleniumhq.github.io/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html#selenium.webdriver.remote.webelement.WebElement.text" rel="nofollow noreferrer">^{<cd11>}</a>属性返回<code>The text of the element.</code></li>
<li><a href="https://stackoverflow.com/questions/40416048/difference-between-text-and-innerhtml-using-selenium/55902072#55902072">Difference between text and innerHTML using Selenium</a></li>
</ul>