如何建立一個手機網(wǎng)站nba新聞最新消息滾動
一、前置說明
selenium遇到下面這種元素:
<th id="demo id" class="value1 value2 value3 ">
1、雖然id一般不會有空格,但是前端錯誤的這種寫法(如下圖),會造成使用id定位不到元素,如:
find_element('id', 'demo id')
這種寫法會直接報錯。
2、class屬性有空格,表示有多個屬性,一般的解決辦法就是使用其中一個屬性,如:
find_element('class name', 'value1')
這種寫法是可以定位到元素,但是往往測試人員在使用時,會將其錯誤的寫成:
find_element('class name', 'value1 value2 value3')
二、解決方案
為了避免上述這種常見的錯誤,可以寫一個方法封裝一下,遇到這種錯誤時,將其轉(zhuǎn)為xpath定位即可。
def _fix_find_elements_by_multiple_values_error(self, by, value) -> List[WebElement]:"""修復(fù) `find_elements` 方法在使用 'id' 或 'class name' 定位時,value為復(fù)合值(比如value='value1 value2')可能引發(fā)的 InvalidArgumentException。"""try:return super().find_elements(by, value)except InvalidArgumentException as original_e:if by == 'class name':by = 'class'try:return super().find_elements('xpath', f'//*[@{by}="{value}"]')except:raise original_e
三、Demo驗證
歡迎技術(shù)交流: